cookie功能

知识点:    cookie
        session:  在服务器存储当前用户的信息.与浏览器相关
        cookie: 在客户端存储数据,由服务器端向客户端发送的数据
        以key-value的方式存储 :key与value都是string类型
 --------------------------------------------


 一  cookie

        1 创建cookie

                Cookie  cook = new Cookie(key,value) ; key与value都是string类型


        2 服务器响应到客户端

                 response.addCookie(cook)


        3 服务器获取cookie的信息

                 request.getCookies()


         4 页面获取cookie的值

                1) 使用EL表达式

                     ${cookie.cookie名称.value}  -->返回值value
                     ${cookie.cookie名称.name}  -->返回cookie中的key

                2) 使用 JS表达式

                     document.cookie; 返回一个字符串
                     "名=值;名=值;名=值"


                  3) 使用jQuery获取

                    3.1) 在JSP页面引入jQuery.js及jQuery.cookie.js
                    3.2)  $.cookie("名")


  二  cookie中的常用方法


        1) getName()  :返回cookie中的key
        2) getValue(),setValue()  :获取或设置cookie中的value
        3)  setMaxAge(int) ,getMaxAge() :获取或设置cookie的有效时长
                单位为秒  :60*60*24*7
                注意:如果不设置,则默认为会话级
 三  使用cookie实现7天内自动登录功能
        1 在login的html页面部分添加一个复选框
                <input type="checkbox" name="autoLogin" value="true">7天内自动登录
       2  在登录的控制器中,根据复选框的值,有值且登录正确时,则把登录的信息存储到cookie中
            设置cookie的有效时长
            并使用response.addCookie添加cookie
       3 编写过滤器  : 实现cookie登录的效果(有cookie中的数据,则转到login.do页面) ,无则转到login.jsp页面

 三、实现一个完整的cookie自动登录功能

1) 登录login.jsp界面

2)对登录界面的监听器 FilterIsLogin

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        Cookie[] cookies = request.getCookies();
        if (cookies ==null || cookies.length==1){
            chain.doFilter(request, response);
        }else {
            boolean a = false;
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("name")){
                    a =true;
                }
            }
            if (a){
                response.sendRedirect(((HttpServletRequest) req).getContextPath()+"/CheckCookie");
            }else {
                chain.doFilter(request, response);
            }
        }

3) 登录login.jsp的表单post提交验证和cookice验证

package com.xja.controller;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "CheckCookie", value = "/CheckCookie")
public class CheckCookie extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();
        String name = null;
        String password = null;
        if (cookies!=null){
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("name")){
                    name = cookie.getValue();
                }
                if (cookie.getName().equals("password")){
                    password = cookie.getValue();
                }

            }
        }
        request.getSession().setAttribute("name",name);
        response.sendRedirect(request.getContextPath()+"/index.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        String choose =request.getParameter("choose") ;
        Cookie cookie = new Cookie("name",name);
        Cookie cookie1 = new Cookie("password",password);
        if (choose!=null){
            cookie.setMaxAge(60*60*24*7);
            cookie1.setMaxAge(60*60*24*7);
        }
        response.addCookie(cookie);
        response.addCookie(cookie1);


        request.getSession().setAttribute("name",name);
        response.sendRedirect(request.getContextPath()+"/index.jsp");
    }
}

4) 用户实现注销退出功能

  Cookie[] cookies = request.getCookies();
        if (cookies!=null){
            for (Cookie cookie : cookies) {
                if (  cookie.getName().equals("name")){
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                }
                if (cookie.getName().equals("password")){
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                }
            }
        }
//        request.getSession().invalidate();
        response.sendRedirect(request.getContextPath()+"/login.jsp");

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值