J2ee技术难点

  1. session/cookie区别联系
  2. jsp/servlet区别联系
  3. filter执行流程
  4. openSessionInView原理
  5. clone与servilizable区别联系
  6. equals与hashcode联系

1.    session与cookie

1)       浏览器禁用cookie后,session还能工作吗?

可以说对和不对,需要解释

不能使因为没有采用url重写机制()

实质是不能的,但是可以借助其他手段,保证session工作,利用url重写机制

 

保证session正常工作通常采用cookie机制,但cookie禁用后,可以利用url重写机制保证session正常工作.

 

2)       Cookie能实现购物车功能吗?

可以,session能干的事情,cookie也能,因为session是通过cookie实现的

1.       Session与cookie的区别联系

(1)     Session和cookie都是保存用户状态信息的一种机制和手段

(2)     Session保存在服务端,cookie保存在客户端

(3)     Session较安全,cookie安全性较差(保存在客户端)

(4)     Cookie可以保存在客户端硬盘上,可以保存时间很长;session保存在服务器的内容中,保存时间较短(tomat默认30分钟,可以通过setMaxInactiveInterval设置最大存活时间)

(5)     Session是通过cookie的机制实现的(没有cookie, session无法工作)

操作系统对内存管理方法(最近最少使用等原则)

关闭浏览器,session回话就消失是错误的,关闭浏览器,只能说明不在进行会话,何时销毁有操作系统决定

利用url重写,将sessionId放于地址后,必须保证所有页面都是动态页面(静态页面动态化才可以)

2.       Session是通过cookie机制实现的

1)  当浏览器键入url,第一访问服务器时候,服务器为请求生成唯一的标示JSESSIONID,存储在服务器的同时,响应客户端浏览器将JSESSIONID,写入到浏览器(内存或硬盘上);

2)  再次请求时,请求中将客户端的Cookie中的 JESSIONID发送给服务器,服务器将检查是否是已经分配的,如果已经分配且未过期,为客户端服务;如果未分配,生成新的SESSIONID,返回给浏览器,依次服务器分配SESSIONID-à发送给浏览器—》浏览器在此请求携带cookie的JSESSIONID,在同一个回话中客户端与服务器,通过唯一标示SESSIONID是否为一个会话上下文(类似事务,或一个线程)

response.addCookie(name,value);//向客户端添加Cookie

request.getCookie(key);//服务器端获得客户端的Cookie

获得客户端请求中的Cookie

Cookie ck[] = request.getCookies();

客户端与服务端通过JSESSIONID关键字标示一次会话

jessionId为32位随机码

 

 

通过重写url

通过cookie方式类似,只是向服务器传递信息不通过cookie,通过url中的特定参数传递jsessionid

 

如:http://localhost:8088/test.jsp;jessionid=32222222222332fffffff

 

地址url中传递jessionid不能用普通地址参数格式传递

必须是url;jsessionid=…..

必须前边是分号

*************

//地址重新格式

<%=response.encodeURL(“url”)%>

=è对应结息后方式为

http://url;jsessionid=343434343方式,这样就可以将服务端分配的jsessionid传递到服务器

无论是地址还是cookie都是为了将jsessionid信息发送到服务器(key:value键值对)

所有地址后边都增加都调用方法:response.encodeUrl(url),这样相当生成的地址携带者jsessionid

无论是cookie还是url重新,其目的都是为向服务器传递jsessionid的值

对于url重写,response.encodeUrl(url)-à其后地址生成jsessionid参数信息,但是此参数格式与普通不同必须是”;jsessionid=”+value格式

2.    Web中的相对路径和绝对路径

绝对路径和相对路径

(1)     相对路径相对basepath(http://localhost:8080/sitename/)一定包含”/

siteName是虚拟路径名称

Basepath:

   String path=request.getContextPath();

   String basePath=request.getSchema()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;

可以修改basePath,适应网页相对路径

basePath=basePath+”test/”;//basePath中包含”/”

即: http://localhost:8080/sitename/result.jsp

<base href=”<%=basePath>”/>

<form action=”result.jsp”>

</form>

可以

<form action=”test/result.jsp”>

</form>

请求地址相对于basePath

所以完整的请求路径为

http://localhost:8080/sitename/test/result.jsp

(2)     绝对路径

相对tomcat的根目录而言

如果路径最前边增加”/”是绝对路径

如href=”/test/a.jsp

对应请求地址为http://localhost:8080/test/a.jsp

即: http://localhost:8080/result.jsp

<form action=”/result.jsp”>

</form>

路径上增加”/”表示绝对路径,绝对路径相对容器(tomcat根目录),不加”/”不是相对路径(相对basepath而言)

(3)     当页面不写basePath时候,此时相对路径为webRoot

即相对路径,如果页面包含basePath就相对basePath,否则相对物理文件夹webRoot而言

一般页面使用相对路径

href=”<%=request.getContextPath()%>/test/a.jsp”

request.getContextPath()=èwebsite的名字

即${website}

他是相对于物理发布路径而言的(webRoot)

request.getContextPath()详解

request.getContextPath()应该是得到项目的名字

<%=request.getContextPath()%>是为了解决相对路径的名字的问题,可返回站点的根路径

request.getScheme();
回的协议名称,默认是http

request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了

getServerPort()
获取服务器端口号

如果你想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web

J2ee技术难点的更多相关文章

  1. 干货云集 WOT 2017全球架构与运维技术峰会揭密技术难点

    WOT,World Of Tech专注互联网IT技术领域,是一场不容错过的技术盛会!WOT 2017全球架构与运维技术峰会三大章节,15大技术专场,60+国内外一线互联网精英大咖站台,打造兼顾技术视野 ...

  2. alpha阶段 代码结构及技术难点简介

    我们的产品是安卓端app,所以目前主要就是用Android Studio来进行代码开发. Android Studio的项目的结构还是比较清晰的,如下图,主要就是java文件夹内的代码部分(.java ...

  3. J2EE技术架构

    一.简介 J2EE(Java 2 Platform, Enterprise Edition)是一个为大企业主机级的计算类型而设计的Java平台.Sun微系统(与其工业伙伴一起,例如IBM)设计了J2E ...

  4. 百度DMA+小度App的蓝牙语音解决方案技术难点解析

    前记   你平时在商场看到的语音助手,看起来非常的简单,其实,这个小小语音助手的背后,是一个非常的复杂的技术支撑.从前端到后端的技术依次是:前端语音降噪技术,高效的音频编解码技术,蓝牙双模技术,DMA ...

  5. 汽车HUD(Head-up Display)的技术难点

    汽车HUD(Head-up Display)的技术难点 首先解析一下HUD是什么原理吧.其实就是把车的前挡风玻璃当成反射镜,在驾驶员人眼前投射一个仪表盘的虚像.图像本身来自下方的电子发光屏,发出仪表盘 ...

  6. 乐学习知选择--我的J2EE技术历程

    转眼换工作已经两个多月了,转眼今年已经到9月份了,转眼女朋友也来到了自己身边.有太多的转眼,如今在这个经理不在的早晨,可以肆意的点点这里看看那里,想想自己,有点吉利思的感觉. 这两个多月,知道了什么叫 ...

  7. 新浪微博SDK开发(2):上传图片的技术难点

    在微博模块中,有一个API是可以发表带一张图片的微博的,当然提交方式是POST.在封装的时候,可能会遇到一个难点——如何上传图片? 要POST微博的同时带有图片,POST的内容必须为MultiPart ...

  8. javascript技术难点(三)之this、new、apply和call详解

    4)    this.new.call和apply的相关问题 讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本 ...

  9. javascript技术难点之this、new、apply和call详解

    讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...

随机推荐

  1. @dynamic 与 @synthesize

    @synthesize是默认选项,表示为属性自动生成getter方法和setter方法 @dynamic 需要在实现文件里注明.例如 @dynamic name:表示用开发者手动动态实现getter和 ...

  2. Target runtime Apache Tomcat v8.0 is not defined.

    Target runtime Apache Tomcat v8.0 is not defined. Window-Preference-MyEclipse-Targeted Runtimes,选择存在 ...

  3. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  4. KB奇遇记(5):奇葩的用人制度

    8月份入职,公司不给我们正式任命,导致了我们开展工作困难重重,基本上很少有人会鸟你,做事仿佛名不正言不顺.哪怕你是未来信息部的老大也一样,网管们根本不买你的账.所以做ERP选型,做旧OA的选型以及加密 ...

  5. TypeScript入门指南(JavaScript的超集)

    TypeScript入门指南(JavaScript的超集)   你是否听过 TypeScript? TypeScript 是 JavaScript 的超集,TypeScript结合了类型检查和静态分析 ...

  6. Javaweb程序服务器部署

    话说从接触web后就想着写一个自己的站点然后别人都可以访问,这也是一个小目标吧,从之前在使用校园网的时候把自己的电脑当成服务器然后部署使用同学的电脑访问,现在想让所有人都可以访问,于是就花重金租了腾讯 ...

  7. 通过java.net.URLConnection发送HTTP请求的方法

    一.前言 如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求. Java有原生的API可用于发送HTTP请求,即java.net.URL.java.net.UR ...

  8. 通过实例解释LinuxC下argc,argc[]的意义

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

  9. 笔记之《用python写网络爬虫》

    1 .3 背景调研 robots. txt Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol),网站 ...

  10. next_permutation(全排列算法)

    STL提供了两个用来计算排列组合关系的算法,分别是next_permutation和prev_permutation.首先我们必须了解什么是"下一个"排列组合,什么是"前 ...