JavaWeb学习|Session

学习材料声明

所有知识点都来自互联网,进行总结和梳理,侵权必删。
引用来源:尚硅谷最新版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+"
"
); resp.getWriter().write("这个会话是不是新的:"+aNew + "
"
); }

设置全部session的全新默认,要在xml文件中

    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>

需要细节了解:为什么设置存活时间3秒,我不断刷新,会话不结束?

原因是,每一次与服务器交互,session的存活时间就会重置为3开始重新倒计时。
需要无交互停留3秒才会消亡。
JavaWeb学习|Session_第1张图片

需要细节了解:为什么关闭浏览器,session就没了,明明session的消亡由存活时间控制?

原因是服务器获得session是从浏览器发送的cookie里的session id查找的,如果cookie里面没有id信息那么回重新创建。在关闭浏览器后cookie信息就消失了,session没了。具体看老师视频里给的交互图:
JavaWeb学习|Session_第2张图片

实践:书城项目中显示登录用户名

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> &nbsp;&nbsp;

        </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>&nbsp;&nbsp;
        </c:if>
        <a href="pages/cart/cart.jsp">购物车</a>
        <a href="pages/manager/manager.jsp">后台管理</a>

你可能感兴趣的:(Java技术学习,java,servlet)