关于session
以前用session时只知道session是和服务器连接的一个会话,有几个常用的接口。
这两天仔细看了下这方面的资料,在这里和大家一起分享,如果有写的不正确的地方,请指正,谢谢。
下面我们在一个servlet中写测试程序,class名为SeesinInfoServlet,我们一般在程序中取得session是用
request的getSession()来取得容器中的session,该方法当容器中已经存在了该session的时候,返回已经存
在的session,否则创建一个新的session,然后返回创建的session。request还有另外一个getSession()的重
载方法:HttpSession getSession(boolean create),一般不常用,大家可以查j2ee的api,每个session都对应
唯一的sessionId,sessionId可以通过getId()方法获得,session是维持客服端和服务器端状态的一个东西,是
通过sessionId来一一对应的,客服端的sessionId一般保存在cookie中,如果客服端的cookie没有被禁掉的话
。如果cookie被禁掉,我们可以通过URL重写来实现把sessionId传到服务器。请看下面程序。
PrintWriter pw = res.getWriter();这一句取得服务器端反映给客服端的输出流。
HttpSession s = req.getSession();取得session。
req.getRequestedSessionId();这一句取得客服端cookie中的sessionId,如果cookie没有被禁掉的话,第一次访问为null,因为还没创建session,以后每次都和
s.getId() 取得的值一致。
req.isRequestedSessionIdFromCookie();如果没有禁掉cookie,返回true。
req.isRequestedSessionIdFromURL();是否通过URL重写取得sessionId,
//pw.println("<a href="+ res.encodeURL("SessionInfoServlet")+">refresh</a>");其中的res.encodeURL(String),即为URL重写,我们可以看到地址栏后会跟sessionId。
如果不是URL重写,则地址栏中没有sessionId。
上一篇: 排序算法第一篇-排序算法介绍
下一篇: 资深大牛全方位剖析 iOS 高级面试