当前位置:   article > 正文

Cookie_设置cookie

设置cookie

 Cookie:客户端对象

1)什么是Cookie

Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户电脑上保存信息并且随后再取回它。

举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。

如果用户使用IE浏览器访问Web,那么用户就会看到所有保存在自己硬盘上的Cookie。它们最常存放的地方是C:\Windows\Cookies。Cookie是以"关键字key=值value"的格式来保存记录的。

基本原理:

1.创建Cookie(服务器端创建)

2.设置存储Cookie(存储到响应头中)

3.发送Cookie

4.读取Cookie

客户端第一次发送请求 -->  服务器接收到请求 -->  创建cookie对象 --> 存储到响应头  

--> 以响应的形式发送到客户端  --> 客户端收到响应信息 解析响应信息  保存cookie  

--> 客户端再次发送同类请求的时候会携带cookie信息发送请求  --> 服务器 解析cookie

在关闭浏览器之前, cookie变量便一直是有效的,所以能够保证长时间不掉线

 

2)创建一个Cookie对象

调用Cookie对象的构造函数就可以创建Cookie对象。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。

例如:

Cookie c = new Cookie("username","john"); 

3)将Cookie对象传送到客户端

在JSP中,如果要将封装好的Cookie对象传送到客户端,可使用Response对象的addCookie()方法。

例如:

response.addCookie(c) 

4)读取保存到客户端的Cookie

使用Request对象的getCookie()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。

例如:

  1. Cookie[] c = request.getCookies();
  2. if(c != null){
  3. for(int i = 0;i < c.length;i++){
  4. if("username".equals(c[i].getName())){
  5. out.println(c[i].getValue());
  6. }
  7. }
  8. }

修改cookie的值

  1. public Cookie updateCookie(String cookieName, String newValue, Cookie[] cookie) {
  2. if (cookie != null) {
  3. for (int i = 0; i < cookie.length; i++) {
  4. if ("cookieName".equals(cookie[i].getName())) {
  5. cookies[i].setPath("/url");
  6. cookies[i].setValue(newValue);
  7. // 将修改后的cookie作为响应返回给客户端
  8. response.addCookie(cookies[i]);
  9. }
  10. }
  11. }
  12. }

5)设置Cookie对象的有效时间

调用Cookie对象的setMaxAge()方法便可以设置Cookie对象的有效时间。

例如:

  1. Cookie c = new Cookie("username","john");
  2. c.setMaxAge(3600);

如何解决Cookie中的中文乱码问题?请写一段程序,在后台servlet中设置cookie,cookie中需要包含中文字符,客户端发送请求后,能够在页面上显示出Cookie中的所有信息

  1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2. // TODO Auto-generated method stub
  3. //对中文value值进行编码
  4. String value = java.net.URLEncoder.encode("中文","utf-8");
  5. Cookie cookie = new Cookie("chinese_code",value);
  6. cookie.setPath("/");
  7. cookie.setMaxAge(60*60*24*6);
  8. response.addCookie(cookie);
  9. //解析
  10. response.getWriter().write(cookie.getName()+" = "+URLDecoder.decode(cookie.getValue(),"utf-8"));
  11. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/149550
推荐阅读
相关标签
  

闽ICP备14008679号