session技术
1. HttpSession对象创建过程
当客户端浏览器第一次访问服务器时,服务器为每个浏览器创建不同的HttpSession对象。在服务器端使用request.getSession()方法来获得HttpSession对象,并以此来使用HttpSession接口为我们提供的方法,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。
<%
//创建HttpSession对象
HttpSession session = request.getSession(true);
或者
HttpSession session =request.getSession();
//获取session的ID
SessionId=session.getId();
//cookie 对象创建
Cookie cookie = new Cookie(“JSESSIONID”,session.getId());
//设置cookie的存在时间
cookie.setMaxAge(30);//这个今天老师上课也提到了
//销毁session对象
session.invalidate();
%>
2. 内置对象session与httpSession对象是同一个东西吗?
据我了解:在jsp中session是一个内置对象。而在servlet 中想使用session就需要先得到session。
根据资料显示:HttpSession是Java平台对session的实现规范,因为它仅仅是一个街口,具体到每一个web应用服务器的提供商,除了对规范支持之外,仍然会有一些规范里面没有的细微差异。
1.Session 对象是javax.servlet.htp.Http session类的实例,主要用来保持在服务器与一个客户端之间需要保留的数据。
2.HttpSession是Java平台对session机制的实现规范,仅仅是个接口。Weblogic Server提供了一系列的参数来控制HttpSession的实现。
3. 如果不确定客户端是否禁用cookie,则可以使用URL重写技术
浏览器会话(session)跟踪的实现方式主要是cookie与URL重写,cookie是默认的方式,当不确定客户端是否禁用cookie的时候,可以用URL重写技术实现会话跟踪。
可以通过HttpServletResponse的encodeURL()方法和encodeRedirectURL()方法实现URL重写,其中,encodeRedirectURL()方法主要对使用sendRedirect()方法的URL进行重写。
URL重写方法根据请求信息中是否包含Set-Cookie请求头来决定是否进行URL重技术的写。若包含了该请求头,将URL原样输出:若不包含,则将会话标识JSEESIONID重写到URL中。URL重写示例代码如下:
//对重定向的URL进行重写
String encodeURL = response.encodeRedirectURL(“toRedirectServlet”);
response.sendRedirect(“encodeURL”);