您的位置:首页 > 其它

J2EE Servlet 知识点

2010-08-21 18:41 232 查看
1.如何获取RequestDispatcher
可以通过request或者web context获取RequestDispatcher对象,不过两个方法稍有不同。一个request可以采用相对的路径
(也就是不以"/"开头)作为参数,而web context需要的是绝对路径。
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/banner");
if (dispatcher != null)
dispatcher.include(request, response);

2.Forward(dispatcher.forward(request, response)或<jsp:forward>)发生后,如何取得之前的url的相关部分
当一个请求被forward到另一个请求后,原始的URI和其组成部分被保存为请求属性:
javax.servlet.forward.[request-uri|context-path|servlet-path|path-info|query-string]

3.Include(dispatcher.include(request, response)或<jsp:include>)发生后,如何获取被包含的页面的信息
当一个页面被包含到另个一页面中后,可以通过request.getRequestURL()获取原来的父URL,而对于被包含的页面的信息,可以通
过获取request中的下列属性获取:
javax.servlet.include.[request-uri|context-path|servlet-path|path-info|query-string]

4.session.invalidate和session.reomveAttribute区别:
removeAttribute就是从session删除指定名称的绑定对象,也就是说调用此方法后再调用getAttribute(Stringname)时,不能获取
指定名称的绑定对象,调用getAttribute方法时返回值是null,但是session还存在。invalidate就是废止此 session对象,解除与
此session对象绑定的所有对象,这个时候调用getAttribute方法会抛出“Session already invlidated!”异常。
注:Session的销毁有两种情况:超时和手动销毁,(1)tomcat可以通过在web.xml中添加如下的配置设置超时的时间
<session-config><session-timeout>30</session-timeout></session-config>;(2)手动销毁是指直接调用其invalidate方
法,此方法实际上是调用expire方法来手动将其设置为超时invalidate是使此session对象失效,调用request.getSession(false)
返回的是null;

5.HttpServletRequest.encodeURL在session跟踪中的应用
encodeURL(url)方法主要用于通过url重写的机制来实现session跟踪,它实现的逻辑如下:
(1)先判断当前的 Web 组件是否启用 Session,如果没有启用 Session,直接返回参数 url。
(2)再判断客户端浏览器是否支持 Cookie,如果支持 Cookie,直接返回参数 url;如果不支持 Cookie,就在参数 url 中加入
Session ID 信息,然后返回修改后的 url。
对于健壮的session跟踪,servlet中派发的所有的url都应该经过这个方法,否则的话,url重写机制对不支持cookie的浏览器将不能
使用;例:
如果浏览器的cookie禁用,encoded url类似:http://localhost:8080/bookstore1/cashier;jsessionid=c0o7fszeb1
如果浏览器的cookie启用,encoded url类似:http://localhost:8080/bookstore1/cashier

6.终止Servlet(TBD)

http://download.oracle.com/javaee/5/tutorial/doc/bnags.html

http://hi.baidu.com/clisdena/blog/item/0350621fb20df0cda786698e.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: