Servlet会话跟踪的几个小“课后题”

1.如何创建和使用Cookie?

2.简述session的工作原理

3.使session失效的3种方法是什么?关闭浏览器可以使session失效吗?

4.HttpServletResponse中支持URL重写的两个方法是什么?有什么区别?

5.简述ServletContext的生命周期

6.在Servlet中,如何获取与当前Web应用程序相关联的ServletContext对象?


1.如何创建和使用Cookie?

  Servlet API中提供了javax.servlet.http.Cookie类,可以通过构造函数创建Cookie,

例如:Cookie c1 = new Cookie("name","value");


2.简述session的工作原理

(1).当客户端向服务器端初次提交请求时,请求中并不包含SessionID。

(2).服务器端的Servlet容器会根据getSession()方法创建一个HttpSession对象,并分配一个SessionID。HttpSession对象保存在服务器端,此时的HttpSession处于新会话状态。

(3).服务器将处理请求的相应结果连同SessionID回传到客户端

(4).当客户再次提交请求时会将请求连同其SessionID一起提交给服务器。

(5).服务器接收到请求以及SeesionID后,将请求和保存在服务器端的session对象联系起来,根据SessionID判断哪些连接是来自同一个客户端的会话范围内的连接。此时的session对象已不是新的会话

(6).循环执行(3)~(5)步,知道session失效。


3.使session失效的3种方法是什么?关闭浏览器可以使session失效吗?

session失效的三种方式:

(1)显示的调用HttpSession.invalidate()方法

(2)客户端两次访问的间隔时间已经超过了session的有效时间

(3)服务器端被关闭

所以很明显:关闭服务器不会使session失效,session失效一般是通过session存活时间设置的最大有效时间


4.HttpServletResponse中支持URL重写的两个方法是什么?有什么区别?


(1).“String encodeURL(String url) ”:重写超级链接、form表单的action值

(2).“String encodeRedirectedURL(String url)”:重写重定向的URL地址


5.简述ServletContext的生命周期

(1)当新的Servlet容器启动时,服务器端会创建一个ServletContext对象。

(2)Servlet容器运行期间,ServletContext对象一直存在。运行于Servlet容器内的Servlet之间可以共享ServletContext对象中的信息资源。

(3)当Servlet容器停止工作时,ServletContext 对象会被销毁,ServletContext生命周期结束。


6.在Servlet中,如何获取与当前Web应用程序相关联的ServletContext对象?


例子:

ServletContext ctx =this.getServletContext();
//实例化一个Servlet】Context对象
Integer userCount = (Integer) ctx.getAttribute("userCount");  
//通过getAttribute(“name”)得到想要的属性


posted @ 2017-05-23 16:12  过道  阅读(155)  评论(0编辑  收藏  举报