JavaWeb中Cookie与Session的使用

时间:2021-09-03
本文章向大家介绍JavaWeb中Cookie与Session的使用,主要包括JavaWeb中Cookie与Session的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Cookie的存值、取值与注销

public class CookieDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置请求和响应的字符集,防止乱码
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        PrintWriter out = resp.getWriter();

        // 服务器从客户端获取Cookie
        Cookie[] cookies = req.getCookies();

        if(cookies!=null){
            out.write("您上次的访问时间是:");
            for (Cookie cookie : cookies) {
                Cookie co = cookie;
                if(co.getName().equals("lastTime")){
                    long l = Long.parseLong(co.getValue());
                    Date date = new Date(l);
                    out.write(date.toLocaleString());
                }
            }
        }else{
            out.write("这是你第一次访问本站");
        }

        Cookie cookie = new Cookie("lastTime",String.valueOf(System.currentTimeMillis()));
        // 设置cookie有效期为一天,设置有效期为0,可以手动删除cookie,即注销cookie
        cookie.setMaxAge(24*60*60);

        // 服务器为客户端设置Cookie
        resp.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

Session的存值、取值与注销

public class SessionDemo01 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置字符集,防止乱码
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        // 浏览器从服务器得到session
        HttpSession session = req.getSession();
        // 给session中存东西
        session.setAttribute("name","lyon");
        // 获取session的ID
        String sessionId = session.getId();
        // 判断session是不是空的
        if(session.isNew()){
            resp.getWriter().write("session创建成功,ID:"+sessionId);
        }else{
            resp.getWriter().write("session已经在服务器中存在,ID:"+sessionId);
        }


        /** session创建的时候做了什么?
         *  1. Cookie cookie = new Cookie("name", "lyon");
         *  2. resp.addCookie(cookie);
         */


        // 取session的值
        Object name = session.getAttribute("name");
        resp.getWriter().write("<br />"+"本次取得的session值为:"+name.toString());
        System.out.println(name.toString());

        // 设置session的值为对象类型,并取值
        session.setAttribute("person",new Person("lyon",18));
        Person person = (Person) session.getAttribute("person");
        resp.getWriter().write("<br />"+"本次从session中取到Person对象的值为:"+person.toString());

        // 手动注销session
        session.invalidate();
        /** web.xml中注销通过设置有效时间
         *
         *   <session-config>
         *   <!--  15分钟后session自动失效  -->
         *     <session-timeout>15</session-timeout>
         *   </session-config>
         */

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

原文地址:https://www.cnblogs.com/hilyon/p/15224949.html