学习材料声明
所有知识点都来自互联网,进行总结和梳理,侵权必删。
引用来源:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版
Session
1、Session 就一个接口(HttpSession)。
2、Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。
3、每个客户端都有自己的一个 Session 会话。
4、Session 会话中,我们经常用来保存用户登录之后的信息。
Session 翻译就是会话的意思。
主要涉及session的创建,判断是否为新会话,存活时间(设置全部session的全新默认,要在xml文件中。)(这里有和浏览器交互的分析,还是蛮重要的)。
涉及的操作:
protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getSession().invalidate();resp.getWriter().write("当前Session已经无效" );}
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getSession().setMaxInactiveInterval(3);int maxInactiveInterval = req.getSession().getMaxInactiveInterval();resp.getWriter().write("当前Session被设置的超时时长为"+maxInactiveInterval+"s" );
}
protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {int maxInactiveInterval = req.getSession().getMaxInactiveInterval();resp.getWriter().write("当前Session的默认超时时长为"+maxInactiveInterval+"s" );
}
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getSession().setAttribute("key1", "value1");resp.getWriter().write("成功设置Attribute。");
}
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Object o = req.getSession().getAttribute("key1");resp.getWriter().write("key1对应的值是"+o);
}
protected void createSession(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();boolean aNew = session.isNew();String id = session.getId();resp.getWriter().write("Session的id是"+id+"<br/>");resp.getWriter().write("这个会话是不是新的:"+aNew + "<br/>");
}
设置全部session的全新默认,要在xml文件中
<session-config><session-timeout>20</session-timeout></session-config>
需要细节了解:为什么设置存活时间3秒,我不断刷新,会话不结束?
原因是,每一次与服务器交互,session的存活时间就会重置为3开始重新倒计时。
需要无交互停留3秒才会消亡。
需要细节了解:为什么关闭浏览器,session就没了,明明session的消亡由存活时间控制?
原因是服务器获得session是从浏览器发送的cookie里的session id查找的,如果cookie里面没有id信息那么回重新创建。在关闭浏览器后cookie信息就消失了,session没了。具体看老师视频里给的交互图:
实践:书城项目中显示登录用户名
servlet中:
req.getSession().setAttribute(“user”, loginUser);
jsp中:
<span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临尚硅谷书城</span>
修改首页:
<c:if test="${empty sessionScope.user}"><a href="pages/user/login.jsp">登录</a> |<a href="pages/user/regist.jsp">注册</a> </c:if><c:if test="${not empty sessionScope.user}"><span>欢迎<span class="um_span">${sessionScope.user.username}</span>光临尚硅谷书城</span><a href="pages/order/order.jsp">我的订单</a><a href="index.jsp">注销</a> </c:if><a href="pages/cart/cart.jsp">购物车</a><a href="pages/manager/manager.jsp">后台管理</a>