首页  ·  知识 ·  编程语言
J2EEServlet知识点
网友    Java  编辑:dezai   图片来源:网络
J2EE Servlet 知识点

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)

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读