Http会话(cookie&session)

http会话

从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话。会话技术就是记录这次会话中客户端的状态和数据的

cookie技术

public class CookieDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*一、服务器发送给客户端一个cookie*/
        /*1.创建cookie,不能存储中文 */
        Cookie cookie = new Cookie("name","tom");
        /*
        * 2.设置cookie在客户端持久化时间
        * 注意:如果不设置持久时间,cookie数据存储到浏览器内存中,浏览器关闭,cookie信息销毁
        * 如果设置持久化时间,cookie信息就会持久化到浏览器的硬盘文件夹中
        * 单位:秒,超过这个时间,浏览器自动清除cookie信息
        * 如果设置为0,且路径和、同名键值的cookie相同,则为删除cookie操作
        * */
        cookie.setMaxAge(10*60); //
        /*
        * 3.设置携带路径
        * 如果不设置,那cookie信息访问产生该cookie的web资源的所有路径都会有cookie
        * */
        cookie.setPath(request.getContextPath());
        /*4.向客户端发送cookie信息*/
        response.addCookie(cookie);


        /*二、服务器获取客户端cookie*/
        Cookie[] cookies = request.getCookies();
        for(Cookie c:cookies){
            if(cookie.getName().equals("name")){
                System.out.println(c.getValue());
            }
        }

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doPost(request, response);
    }
}

session技术(常结合cookie使用)

public class SessionDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*得到session对象*/
        HttpSession session = request.getSession();
        /*第一次访问,服务器创建新的session,如果存在则不会创建新的session*/
        if(session.isNew()){
            System.out.println("当前session为服务器新创建的"+session.getId());
        }
        /*向session对象中放置数据*/
        session.setAttribute("sex","男");
        /*取session数据*/
        String sex = (String)session.getAttribute("sex");
        /*移除session中数据*/
        session.removeAttribute("sex");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doPost(request, response);
    }
}

session对象的生命周期

/*创建:第一次执行request.getSession()时*/
request.getSession();
/*手动销毁*/
session.invalidate();
/*
* session过期/失效(默认30分钟,计算方式:从不操作服务器端资源开始计时)
* session过期时间配置在web.xml中配置,配置如下
*/

  ...
  
    60
  
  ...

你可能感兴趣的:(Http会话(cookie&session))