Session
和cookie类似,但是session是保存在服务器端的缓存
给当前的浏览器窗口赋一个id,这个sessionId就是这块缓存的值。
如果当前浏览器支持cookie,则会保存这个id到cookie里面,每次调用的时候就会从cookie里面取出这个值,然后访问服务器。
如果浏览器不支持cookie,则需要通过URL重写的方式,会在地址后面加上session(resp.encodeURL())。
只要是 同一个窗口下&&同一app 下的servlet和jsp都共享同一个session
下面贴代码:
主要有几个地方注意的就是下面获取session主要是2种途径,一种是在cookie里面获取,一种是在URL里面重写。
后面添加了往session里面写东西的代码
//请求地址http://localhost:8080/test/SessionInfoServlet
public class SessionInfoServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession mSession = req.getSession(true);
resp.setContentType("text/html");
PrintWriter writer = resp.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>Session信息</title>");
writer.println("</head>");
writer.println("<body>");
//访问的时候就有cookie,这时候查看他的信息
writer.println("<h3>Session infomation</h3>");
writer.println("new Session: "+ mSession.isNew());
writer.println("<br /> Session ID: " + mSession.getId());
writer.println("<br /> Session created time: " +
new java.util.Date(mSession.getCreationTime()));
writer.println("<br /> Session Accessed time: " +
new java.util.Date(mSession.getLastAccessedTime()));
//请求时候的session
writer.println("<h3>request infomation</h3>");
writer.println("<br /> Session ID from request: " + req.getRequestedSessionId());
writer.println("<br /> Session via cookie: " + req.isRequestedSessionIdFromCookie());
writer.println("<br /> Session via url: " + req.isRequestedSessionIdFromURL());
writer.println("<br /> Valid Session ID: " + req.isRequestedSessionIdValid());
//使用cookie,获取session
writer.println("<br /> <a href=\"SessionInfoServlet\">refresh</a>");
//使用URL重写的方式
//writer.println("<br /> <a href=" +resp.encodeRedirectURL("SessionInfoServlet")+ ">refresh</a>");
//往session里面写东西,一般是键值对
Integer accessCount = (Integer) mSession.getAttribute("accessCount");
if(accessCount==null){
accessCount=new Integer(0);
}else{
accessCount=new Integer(accessCount.intValue()+1);
}
mSession.setAttribute("accessCount", accessCount);
writer.println("<h3>accessCount:"+accessCount+"</h3>");
writer.println("</body></html>");
writer.close();
}
}