Servlet 第三方jar包 会话技术 中的 cookie (客户端技术)

会话技术

客户端(浏览器) 和服务端(服务器)进行交互(会话)
当浏览器关闭的时候 这次交互(会话)结束

例如:打电话

会话中的两个技术
1.cookie (客户端技术)
保存浏览器中的缓存数据

当我发起一个请求 请求一个Servlet
进行逻辑处理
1.添加一个商品进购物车

2.处理完成后 给客户端(浏览器) 一个响应

3.响应中携带者记录了购买的什么商品 cookie

4.让浏览器保存起来 可以是保存在内存当中(结束回话 cookie被清除)
当保存在硬盘当中(结束会话 依然存在 会变成一个文件储存在客户端上)

5.当再次使用浏览器访问购物车时 浏览器会携带保存到客户端的cookie文件去访问.

注意: 第一次访问服务器的时候是不会携带着cookie去访问的
原因是 在第一次访问的时候cookie还没有产生
只有当第一次请求后的响应可以把cookie写回到浏览其中

配置Demo04 Servlet的基本属性

扫描二维码关注公众号,回复: 944215 查看本文章
  <servlet>
  <servlet-name>demo04</servlet-name>
  <servlet-class>com.lanou3g.Demo04</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo04</servlet-name>
  <url-pattern>/servlet/demo04</url-pattern>
  </servlet-mapping>

public class Demo04 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    //设置响应编码格式
                    response.setContentType("text/html;charset=UTF-8");
                    //告诉服务器  请求的内容是什么编码格式的
                    request.setCharacterEncoding("UTF-8");  
                    //读取cookie
                    Cookie[] cookies = request.getCookies();
                    if (cookies!=null) {
                        //遍历数组
                        for (Cookie cookie : cookies) {
                            if (cookie.getName().equals("lastTime")) {
                                    //取出cookie的值
                                    String value = cookie.getValue();
                                    //字符串转Long
                                    long time = Long.parseLong(value);
                                    //转成日期 Data
                                    Date date = new Date(time);
                                    //创建一个显示的日期格式
                                    //参数就是你想要显示的日期格式
                                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                                    //格式化时间 
                                    String lastTime = dateFormat.format(date);
                                    // 响应回(显示到)浏览器
                                    response.getWriter().write("上次的访问时间" + lastTime);

                            }
                        }
                    }





                    //保存cookie  记录当前的时间
        Cookie cookie  = new Cookie("lastTime", System.currentTimeMillis()+"");
                    //设置一下cookie的保存路径  工程名 + 配置的网址路径 
                    //读取cookie是按请求的地址 寻找cookie的
                    //如果你配置请求路径 没有一级目录   这样全网站
                    // 所有的网址请求都能找到你的这个cookie
                    ///cookie.setPath("/");
                    cookie.setPath("/SH-web-servlet03/servlet");
                    //设置cookie的存活时间
                    //负值 表示浏览器关闭  cookie 消失
                    //正值 表示 存货的时间 
                    //0  表示  删除cookie
                    cookie.setMaxAge(60 * 5); 
                    //把cookie 添加进响应当中
                    response.addCookie(cookie);

}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}

获取本次次登录的时间,只要想看上次登录的时间就可以使用这个方法

配置Demo05 Servlet的基本属性

 <servlet>
  <servlet-name>demo05</servlet-name>
  <servlet-class>com.lanou3g.Demo05</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo05</servlet-name>
  <url-pattern>/servlet/demo05</url-pattern>
  </servlet-mapping>
public class Demo05 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应编码格式
        response.setContentType("text/html;charset=UTF-8");
        //告诉服务器  请求的内容是什么编码格式的
        request.setCharacterEncoding("UTF-8");  
        //读取cookie
        Cookie[] cookies = request.getCookies();
        if (cookies!=null) {
            //遍历数组
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("lastTime")) {
                        //取出cookie的值
                        String value = cookie.getValue();
                        //字符串转Long
                        long time = Long.parseLong(value);
                        //转成日期 Data
                        Date date = new Date(time);
                        //创建一个显示的日期格式
                        //参数就是你想要显示的日期格式
                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        //格式化时间 
                        String lastTime = dateFormat.format(date);
                        // 响应回(显示到)浏览器
                        response.getWriter().write("上次的访问时间" + lastTime);

                }
            }
        }
    }








    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

登陆后 记录用户名

配置Demo06 Servlet的基本属性

 <servlet>
  <servlet-name>demo06</servlet-name>
  <servlet-class>com.lanou3g.Demo06</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo06</servlet-name>
  <url-pattern>/servlet/demo06</url-pattern>
  </servlet-mapping>

public class Demo06 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                        //设置响应编码格式
                        response.setContentType("text/html;charset=UTF-8");
                        //告诉服务器  请求的内容是什么编码格式的
                        request.setCharacterEncoding("UTF-8");
                            String username = "";
                        //读取cookie
                        Cookie[] cookies = request.getCookies();
                        if (cookies !=null) {
                            for (Cookie cookie : cookies) {
                                if (cookie.getName().equals("username")) {
                                    username = cookie.getValue();
                                }
                            }
                        }
                            //完成数据回显
                        //打印下username是否可以获取到
                        System.out.println(username);

//                      response.getWriter().write("<a href ''>wanglong</a>");
                        response.getWriter().write("<form action='/SH-web-servlet03/servlet/demo07' method='post' >");
                        response.getWriter().write("用户名 <input type='text' name='username'></br>");
                        response.getWriter().write("密码&nbsp&nbsp&nbsp&nbsp<input type='password' name='password'></br>");
                        response.getWriter().write("<input type='checkbox' name='remember' value='记住'>记住</br>");
                        response.getWriter().write("<input type='submit' value='登陆'></br>");
                        response.getWriter().write("</form>");

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

配置Demo07 Servlet的基本属性

 <servlet>
  <servlet-name>demo07</servlet-name>
  <servlet-class>com.lanou3g.Demo07</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>demo07</servlet-name>
  <url-pattern>/servlet/demo07</url-pattern>
  </servlet-mapping>
public class Demo07 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                                    //设置响应编码格式
                                    response.setContentType("text/html;charset=UTF-8");
                                    //告诉服务器  请求的内容是什么编码格式的
                                    request.setCharacterEncoding("UTF-8");

                                    //获取请求的参数
                                    String username = request.getParameter("username");
                                    String password = request.getParameter("password");
                                    String remember = request.getParameter("remember");

                                    //创建cookie
                                    Cookie cookie = new Cookie("username", username);
                                    //设置cookie路径
                                    cookie.setPath("/SH-web-servlet03/servlet");

                                    //处理业务逻辑

                                    if (username.equals("w") && password.equals("123")) {   
                                        response.getWriter().write("登陆成功");
                                            //判断一下是否  点记住按钮
                                            if (remember != null) {
                                                //需要记住: 不是空的(设置)
                                                cookie.setMaxAge(Integer.MAX_VALUE);
                                            }else {
                                                //删除原来的cookie (设置 存活时间)
                                                cookie.setMaxAge(0);    
                                            }
                                            //添加到响应中
                                            response.addCookie(cookie);
                                    }else {
                                        response.getWriter().write("登陆失败");
                                        //三秒后 返回登陆页面
                                        response.setHeader("refresh", "3;url =/SH-web-servlet03/servlet/demo06 ");

                                    }
                                    //请求分发

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

猜你喜欢

转载自blog.csdn.net/qq_36390044/article/details/79735638
今日推荐