Java Cookie 会话技术

一、Cookie简介

Cookie是保存在计算机上的一种文件。当我们使用计算机浏览网页时,服务器会生成一个证书并将其返回给我们的计算机。这个证书是cookie。一般来说,cookie是服务器写给客户端的文件,也可以称为浏览器缓存。

简单来说,它可以读取并保存你访问网站时产生的一些行为信息,这些信息通常是加密的,否则会侵犯用户的隐私。Cookie也可以帮助加快第二次访问。通常,当我们访问一些网页时,系统会提示我们是否要保存用户名和密码。下次登录时,我们可以自动登录,无需再次登录。

二、创建和发送Cookie

1.创建Cookie,以响应头的方式发送给客户端

Cookie cookie = new Cookie(String cookieName, String cookieValue);

2.向客户端发送Cookie

response.addCooike(Cookie cookie);

三、Cookie的一些常见API

1.设置Cookie在客户端的持久化时间

cookie.setMaxAge(int seconds)

注意:如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里

2.设置Cookie的携带路径

cookie.setPath(String path)

注意:如果不设置携带路径,那么该cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息

3.向客户端发送Cookie

response.addCooike(Cookie cookie)

4.删除客户端的cookie

cookie.setMaxAge(0)

注意:如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0的cookie进行覆盖即可

5.服务器获取客户端携带来的Cookie,以请求头的方式发送到服务器端的

// 通过request获得所有的Cookie
Cookie[] cookies = request.getCookies();

// 遍历Cookie数组,通过Cookie的名称获得我们想要的Cookie
for (Cookie cookie : cookies) {
    if (cookie.getName.equals("cookieName")){
        String cookieValue = cookie.getValue();
    }
}

四、Java Servelet Cookie 示例

1.生成cookie

@WebServlet(name = "CookieServlet",urlPatterns = "/cookie")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie=new Cookie("goods","cup");//不能使用中文
        cookie.setMaxAge(60*10);
        cookie.setPath("/hello/getCookie");

        Cookie cookie1=new Cookie("userName","xiaoming");

        response.addCookie(cookie);
        response.addCookie(cookie1);

    }
}

 2.显示 cookie

@WebServlet(name = "GetCookieServlet",urlPatterns = "/getCookie")
public class GetCookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie[] cookies = request.getCookies();

        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            if (name.equals("userName")){
                String cookieValue = cookie.getValue();
                response.getWriter().write("userName:"+cookieValue);
            }
        }
    }
}

五、案例 记录网站上一次访问时间

@WebServlet(name = "TimeServlet", urlPatterns = "/time")
public class TimeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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


        //记录访问时间并其通过cookie加入到响应头
        Date date = new Date();

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd-hh:mm:ss");
        String time = simpleDateFormat.format(date);

        Cookie cookie = new Cookie("time", time);
        cookie.setMaxAge(60*60*24);
        response.addCookie(cookie);
        response.setContentType("text/html;charset=utf-8");
        //获取客户端浏览器发送过来的cookie数据
        Cookie[] cookies = request.getCookies();
        String timeValue = null;
        for (Cookie cookie1 : cookies) {

            if (cookie1.getName().equals("time")) {
                timeValue = cookie1.getValue();
            }
        }
        if (timeValue == null) {
            response.getWriter().write("欢迎您访问我们的网站");
        } else {
            response.getWriter().write("您上次访问网站的时间是:" + timeValue);
        }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值