会话跟踪技术

本文详细介绍了Servlet中两种主要的会话跟踪技术——Cookie和Session。对于Cookie,讲解了如何发送和获取Cookie,以及其工作原理,包括如何设置存活时间和处理中文字符。对于Session,演示了如何设置和获取Session属性,并通过浏览器测试验证其工作流程。内容涵盖了Web开发中重要的会话管理技术。
摘要由CSDN通过智能技术生成

(1)客户端会话跟踪技术:==Cookie==  

基本使用

发送cookie

/*
发送cookie给浏览器
 */
@WebServlet(value = "/l01")
public class ServletCookieDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取
        Cookie cookie = new Cookie("username","张三");

        //发送
        response.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response)

    }
}

 获取cookie

Cookie[] cookies = request.getCookies(); 

会把所有的cookie都获取出来 我们只想拿到我们想要的

做一个if判断

/*
获取cookie
 */
@WebServlet(value = "/l02")
public class ServletCookieDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            //会把所有的都遍历出来 我只想要我发送的username
            String name = cookie.getName();
            if ("username".equals(name)) {
                String value = cookie.getValue();
                System.out.println(value + ":" + name);
                break;
            }
        }
    }

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

在浏览器中先发送 然后再开一个网页 获取

 


 cookie的原理

 

 每一个分号就代表一个cookie


 正常情况下当浏览器关闭时 当前的cookie就会消失 这不符合一些需求 比如登录网站时的 记住我 按钮 这是就需要一个存活时间的api

 tomcat7以前不支持cookie存储中文 以后的版本支持存储中文


 (2)服务端会话跟踪技术:==Session==

 

 

 

 

 

 基本使用 很简单

分两步 第一步设置session

@WebServlet(value = "/s1")
public class ServletSessionDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //设置session 
        HttpSession session = request.getSession();
        session.setAttribute("username","张三疯");
    }

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

第二步 在另一个请求中获取session

@WebServlet(value = "/s2")
public class ServletSessionDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();
        Object username = session.getAttribute("username");
        System.out.println("username = " + username);
    }

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

浏览器测试

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值