J2ee技术难点

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

时间: 2024-10-19 10:30:16

J2ee技术难点的相关文章

网盘桌面客户端的技术难点

最近在做网盘桌面客户端,遇到如下技术难点: 1.网盘如何本地虚拟化(类似金山网盘等桌面快捷方式等功能) 2.如何使用Shell扩展技术 3.是否需要使用COM组件编程技术 4.如何做文件实时同步功能 以上难点到目前还有好多未知的情况,如果有人知道或者做过类似的桌面shell扩展,麻烦告知 (*^__^*) 嘻嘻…… http://blog.csdn.net/esonpo/article/details/11128719

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

在微博模块中,有一个API是可以发表带一张图片的微博的,当然提交方式是POST.在封装的时候,可能会遇到一个难点——如何上传图片? 要POST微博的同时带有图片,POST的内容必须为MultiPart form data格式的内容,这个呢,我用到.NET 45中新增的一个相当强大的HttpClient类,位于System.Net.Http命名空间下.这个类的好处在于,它把许多HTTP操作都封装了,让我们使用起来不至于过于痛苦. 源码下载:http://vdisk.weibo.com/s/z7iF

J2EE技术

J2EE是一系列技术标准所组成的平台,包括: Applet - Java Applet EJB - 企业级JavaBean(Enterprise Java Beans) J2EE技术之所以赢得媒体广泛重视的原因之一就是EJB.它们提供了一个框架来开发和实施分布式商务逻辑,由此很显著地简化了具有可伸缩性和高度复杂的企业级应用的开发.EJB规范定义了EJB组件在何时如何与它们的容器进行交互作用.容器负责提供公用的服务,例如目录服务.事务管理.安全性.资源缓冲池以及容错性.但这里值得注意的是,EJB并

【springmvc+mybatis项目实战】杰信商贸-29.购销合同技术难点分析

我们接下来要进行最复杂的一个打印,就是购销合同的打印---制式表单的打印,业界最复杂的报表打印. a)分析技术难点: 1)插入图片,POI插入图片时,设定区域,自动缩放到这个区域中,图片要设置偏移量 HSSFPatriarch patriarch = sheet.createDrawingPatriarch();//add picture poiUtil.setPicture(wb, patriarch, path+"make/xlsprint/logo.jpg", curRow, 2

心&#183;迹alpha阶段 代码结构及技术难点简介

我们的产品是安卓端app,所以目前主要就是用Android Studio来进行代码开发. Android Studio的项目的结构还是比较清晰的,如下图,主要就是java文件夹内的代码部分(.java)以及res文件夹内的布局部分 (.xml). 一.Java部分 (一)数据库部分 这一部分主要是数据库方提供给UI小组的一系列需要用到并存储到数据库中的类. UI小组可以不管数据库的内部逻辑,直接构造对象并用其中的方法,如下图. (二)UI部分 这一部分主要就是前端UI的一些逻辑(主要是各个Act

实时音视频技术难点及解决方案

对于一个实时互动的音视频系统而言,存在很多技术难点,有几个比较重要的点: 首先是低延迟,如果要满足比较流畅地进行实时互动,那么单向的端到端的迟延大概要在400毫秒以下才能保证流畅沟通; 第二点就是流畅性,你也很难想象在视频过程中频繁卡顿会有良好的互动; 第三点是回声消除,回声的产生是扬声器播放的声音经过环境反射被麦克风重新采集并传输给对方,这样对方就会一直听到自己的回声,整个互动过程会非常难受; 第四点是国内外互通,随着现在国内同质化产品越来越多,国内的竞争也异常激烈,很多厂商纷纷选择出海,这时

水平分库分表的关键步骤和技术难点

在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法.本篇中,我们将继续聊聊水平分库分表的一些技巧. 分片技术的由来 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量.连接数.处理能力等都很有限,数据库本身的"有状态性"导致了它并不像Web和应用服务器那么容易扩展.在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding.分片).同时,流行的分布式系统中间件(例如MongoDB.Elas

Js常用的技巧和技术难点-前言

最近在看JavaScript高级程序设计和JavaScript忍者秘籍,有不少感悟,也了解了一些之前总见过却不明白的一些原理,在这里把这些知识整理记录一下.虽然从了解js到现在也有几年时间,但这几年却很少使用,一直停留在一个初学者的阶段.最近想重新学习这门语言,做一个彻底的了解,所以有了这个系列的文章. 本人真正在用JS的时间其实也就1年多,这1年多的时间并没有使用太多的高级技巧,所以其中一些难点的理解可能不是很全面和透彻,也有可能自己的理解有些偏差,所以当文章中的观点出现了一些错误时,请各位大

无人便利店已成风口,还面临着哪些技术难点

无人便利店的核心在于无人运营,无人便利店加盟合作找许:159.9822.8310 微电).无人超市系统开发,无人便利店系统代理.其发展的关键基础在于物联网技术的发达,这些无人超市的"无人运营"均涉及到了扫码开门.人脸识别.防盗监控.远程客服.智能收银等物联网前沿技术. 随着无人超市的火爆,想要快速的进军这个市场,选择成熟的技术合作,相比周期长并且短时间无法见成效的自主研发是更好的选择. 从目前发展局势来看,无人超市发展前景十分可观,作为一种新的消费形式,当面试就吸引了无数用户的关注,这