cookie&session使用方式

cookie:数据存在客户端(浏览器),长期储存

session:数据存在服务器,默认保存30分钟

cookie使用方式:

    1.创建cookie对象并用response发送

  Cookie cookie = new Cookie("username","zs");

  response.addCookie(cookie);

 2.获取cookie对象并遍历取出需要的数据

  Cookie[] cookies = request.getCookies();

  遍历并判断数据

 3.因为有些服务器不能识别中文,因此如果是中文需要用URL编码之后存储、获取

  编码:String value = "张三";    value = URLEncoder.encode(value, "UTF-8");

  解码:value = URLDecoder.decode(value,"UTF-8");

 1 @WebServlet("/aServlet")//发送cookie
 2 public class AServlet extends HttpServlet {
 3     @Override
 4     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 5 //发送Cookie==>创建并发送
 6 
 7         //创建Cookie对象
 8 //        Cookie cookie = new Cookie("username","zs");
 9         
10         String value = "张三";
11         //URL编码
12         value = URLEncoder.encode(value, "UTF-8");
13         System.out.println("存储数据:"+value);
14         //1.创建Cookie对象
15         Cookie cookie = new Cookie("username",value);
16         //设置存活时间   ,1周 7天
17         cookie.setMaxAge(60*60*24*7);
18         //2. 发送Cookie,response
19         response.addCookie(cookie);
20     }
@WebServlet("/bServlet")//获取cookie
public class BServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取Cookie

        //1. 获取Cookie数组
        Cookie[] cookies = request.getCookies();
        //2. 遍历数组
        for (Cookie cookie : cookies) {
            //3. 获取数据
            String name = cookie.getName();
            if("username".equals(name)){
                String value = cookie.getValue();
                //URL解码
                value = URLDecoder.decode(value,"UTF-8");
                System.out.println(name+":"+value);

                break;
            }
        }
    }

 

session使用方式:

    1.存储数据(获取session对象,使用set方法存储

 HttpSession session = request.getSession();

 session.setAttribute("String",Object);

 2.获取数据

 Object o = session.getAttribute(key);

 3.注意事项

  (1) session默认存储30分钟

  (2) 利用session.invalidate();方法销毁session

@WebServlet("/demo1")//存储session
public class SessionDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //存储到Session中
        //1. 获取Session对象
        HttpSession session = request.getSession();
        System.out.println(session);
        //2. 存储数据
        session.setAttribute("username","zs");
    }
@WebServlet("/demo2")//获取session
public class SessionDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取数据,从session中
        //1. 获取Session对象
        HttpSession session = request.getSession();
        System.out.println(session);

        //2. 获取数据
        Object username = session.getAttribute("username");
        System.out.println(username);
        // 销毁
        session.invalidate();
    }

 

posted @ 2022-12-10 21:30  changeyi  阅读(82)  评论(0编辑  收藏  举报