欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JavaWeb 会话技术之Cookie,

来源: javaer 分享于  点击 40036 次 点评:56

JavaWeb 会话技术之Cookie,


会话技术

  • 实现原理

    • 基于响应头set-cookie 和请求头cookie实现
  • Cookie的细节

  • Cookie能不能存中文

    • 在tomcat8之前不支持
    • 在tomcat8之后支持
  • Cookie获取范围多大?

  • Cookie的特点和作用

    • 特点

    • 作用

  • 案例:记住上一次访问时间

  • 分析

  • 代码

    public class CookieTest extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //设置响应的消息体的数据格式以及编码
            resp.setContentType("text/html;charset=utf-8");
            //1.获取所有cookie
            Cookie[] cookies = req.getCookies();
            boolean flag = false;//没有cookie为lastTime
            //2.遍历cookies数组
            if (cookies != null && cookies.length > 0){
                for (Cookie cookie : cookies) {
                    //3.获取cookie的名称
                    String name = cookie.getName();
                    //4.判断名称是否是lastTime
                    if ("lastTime".equals(name)){
                        //有该cookie,不是第一次访问
                        flag = true; //有lastTime的cookie
                        //设置Cookie的value
                        //获取当前时间的字符串,重新设置cookie的值,重新发送cookie
                        Date date = new Date();
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH:MM:SS");
                        String str_date = sdf.format(date);
                        System.out.println("编码前"+str_date);
                        //URL编码
                        str_date = URLEncoder.encode(str_date,"utf-8");
                        System.out.println("编码后"+str_date);
                        //设置cookie的存活时间
                        cookie.setMaxAge(60*60*24*30);//一个月
                        resp.addCookie(cookie);
                        //响应数据
                        //获取cookie的value
                        String value = cookie.getValue();
                        System.out.println("解码前"+value);
                        value = URLDecoder.decode(value,"utf-8");
                        System.out.println("解码后"+value);
                        resp.getWriter().write("<h1>欢迎回来,宁上次访问的时间为:"+value+"</h1>");
                        break;
                    }
                }
            }
    
            if(cookies == null || cookies.length == 0 || flag == false){
                //没有cookie,第一次访问
                //设置Cookie的value
                //获取当前时间的字符串,重新设置cookie的值,重新发送cookie
                Date date = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH:MM:SS");
                String str_date = sdf.format(date);
    
                System.out.println("编码前"+str_date);
                //URL编码
                str_date = URLEncoder.encode(str_date,"utf-8");
                System.out.println("编码后"+str_date);
    
                Cookie cookie = new Cookie("lastTime",str_date);
                //设置cookie的存活时间
                cookie.setMaxAge(60*60*24*30);//一个月
                resp.addCookie(cookie);
                resp.getWriter().write("<h1>您好,欢迎你的首次访问</h1>");
            }
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doPost(req,resp);
        }
    }
    
    
  • 相关文章

      暂无相关文章
    相关栏目:

    用户点评