Java cookie的使用

转自:http://www.blogjava.net/tscfengkui/archive/2011/01/21/343341.html

很感谢,让小白明白其中道理

Java cookie的使用

1.cookie是什么?

cookie是web应用当中非常常用的一种技术,用于储存某些特定的用户信息。

2.cookie的作用?

在用户登陆时将用户的信息存放在cookie中,用户在一定的时间中再次登陆时不需要输入用户名和密码直接跳转到下一个界面。

3.设置cookie

Cookie cookie = new Cookie("key", "value");

cookie.setMaxAge(saveTime*24*60*60);

生存周期默认时间为秒,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。

cookie.setPath("/test/test2");

设置Cookie路径,不设置的话为当前路径(对于Servlet来说为request.getContextPath() + web.xml里配置的该Servlet的url-pattern路径部分) 。

response.addCookie(cookie);

4.读取cookie

该方法可以读取当前路径以及“直接父路径”的所有Cookie对象,如果没有任何Cookie的话,则返回null。如果设置了路径使用这个方法也没有值。

Cookie[] cookies = request.getCookies();

5.删除cookie

Cookie cookie = new Cookie("key", null);

cookie.setMaxAge(0);

设置为0为立即删除该Cookie;

cookie.setPath("/test/test2");

删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookie;

response.addCookie(cookie);

下面看一个例子,这是模拟126邮箱登陆的小功能。建立一个名为AutoLoginFilter的project,包结构如下:

project下有三个java文件、两个jsp还有个html,

CheckLogin.java代码如下:

public class CheckLogin { 

     public static boolean login(String username, String password) {   
            if ("admin".equals(username) && "123456".equals(password)) {   
                return true;   
            } else {   
                return false;   
            }   
        }   



IndexFilter.java代码如下:

package com.bx.course;
/**
* Filter可以实现对请求的过滤和重定向等,也就是说可以操作request和response,session等对象,listner只能监听到以上对象的属性的修改。
*/ 

import java.io.IOException;   
import javax.servlet.Filter;   
import javax.servlet.FilterChain;   
import javax.servlet.FilterConfig;   
import javax.servlet.ServletException;   
import javax.servlet.ServletRequest;   
import javax.servlet.ServletResponse;   
import javax.servlet.http.Cookie;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
public class IndexFilter implements Filter {   
    public void destroy() {   
        // TODO Auto-generated method stub   
    }   
    public void doFilter(ServletRequest arg0, ServletResponse arg1,   
            FilterChain arg2) throws IOException, ServletException { 
        System.out.println("every request pass here haha");
        HttpServletRequest request = (HttpServletRequest) arg0;   
        HttpServletResponse response = (HttpServletResponse) arg1;   
        Cookie[] cookies = request.getCookies();  
//        Cookie cookie = new Cookie("user",null);
//        cookie.setMaxAge(0);
//        response.addCookie(cookie);
        String[] cooks = null;   
        String username = null;   
        String password = null; 
        if (cookies != null) {   
            for (Cookie coo : cookies) {   
                String aa = coo.getValue(); 
                System.out.println("1");
                cooks = aa.split("==");   
                if (cooks.length == 2) {
                    System.out.println(cooks[0]+cooks[1]);
                    username = cooks[0];   
                    password = cooks[1];   
                }   
            }   
        } 
        System.out.println("cookie username | " + username);
        System.out.println("cookie password | " + password);
        if (CheckLogin.login(username, password)) {
            System.err.println("check successfully cookie data ");
            request.getSession().setAttribute("username",username);   
            request.getRequestDispatcher("/main126.jsp").forward(request, response);
        }else{   
            arg2.doFilter(request,response );   
        }   
    }   
    public void init(FilterConfig arg0) throws ServletException {   
        // TODO Auto-generated method stub   
    }   


LoginServlet.java代码如下:

package com.bx.course;
import java.io.IOException;   

import javax.servlet.ServletException;   
import javax.servlet.http.Cookie;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
public class LoginServlet extends HttpServlet {   
    public void doGet(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
        this.doPost(request, response);   
    }   
    public void doPost(HttpServletRequest request, HttpServletResponse response)   
            throws ServletException, IOException {   
           String username=request.getParameter("username");   
           String password=request.getParameter("password");   
           String savetime=request.getParameter("saveTime"); 
           System.out.println("usrename  "+username+"  password "+password);
           if(CheckLogin.login(username, password)){   
               if(null!=savetime){   
                   int saveTime=Integer.parseInt(savetime);//这里接受的表单值为天来计算的   
                   int seconds=saveTime*24*60*60;   
                   Cookie cookie = new Cookie("user", username+"=="+password); 
                   cookie.setMaxAge(seconds);                      
                   response.addCookie(cookie);   
               }   
               request.setAttribute("username",username);   
               request.getRequestDispatcher("/main126.jsp").forward(request,response);   
           }else{   
               request.getRequestDispatcher("/failure.jsp").forward(request,response);   
           }   
    }   
}   

web.xml配置文件代码如下:

<filter>
        <filter-name>loginFilter</filter-name>
        <filter-class>com.bx.course.IndexFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>loginFilter</filter-name>
        <url-pattern>/login.html</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.bx.course.LoginServlet</servlet-class>
    </servlet> 

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.html</welcome-file>
    </welcome-file-list> 

    <welcome-file-list>
        <welcome-file>main126.jsp</welcome-file>
    </welcome-file-list> 

login.html代码如下:

<html>  
  <head>  
  </head>  
  <body>  
  <form action="login.do">  
    126邮箱登录<br/><br/>
           用户名:<input type="text" name="username" ><br/>  
           密    码:<input type="text" name="password" ><br/>  
   <select name="saveTime">  
        <option value="366">一年</option>  
        <option value="183">半年</option>  
        <option value="30">一个月</option>    
        <option value="7">一周</option>  
   </select><br/>  
   <input type="submit" value="登录" />
  </form>  
  </body>  
</html>  

main126.jsp代码如下:

<html>  
  <head>  
     <title>测试cookie</title>  
  </head>  
  <body>  
         <h2>登录成功,欢迎${username}的到来 126邮箱</h2><br/>
         <h3>测试cookie的功能
  </body>  
</html>  

failure.jsp代码如下:

<body>
    Login failure <br>
  </body>

运行效果:

在IE地址栏中输入http://localhost:8080/LoginFilter/login.html

显示如下界面:

输入用户名:admin    密码:123456 选择保存时间,然后点击登陆,就会进入以下界面:

在保存时间内再次在IE地址栏中输入:http://localhost:8080/LoginFilter/login.html

就会直接进入登陆成功界面。如果用户名或密码不正确则会进入以下界面:

时间: 2024-11-03 14:06:48

Java cookie的使用的相关文章

Java——Cookie与Session

Cookie通过客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份. 1.Cookie  1.1概念及使用方法 Cookie实际上是一小段文本信息.客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来,当浏览器再请求该网站时,把请求的网址连同该Cookie一同交给服务器.服务器检查该Cookie,以此来辨认用户状态.服务器还可以根据需要修改Cookie的内容. java中把Cook

java cookie记录最近浏览商品记录(取最新的五个浏览记录)

//商品浏览详细信息记录商品id,存到cookie中 package com.kt.servlet_qt; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.servlet.ServletException; im

Java Cookie和Session

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h

Java Cookie详解

Cookie 的作用我想大家都知道,通俗地说就是当一个用户通过 HTTP 协议访问一个服务器的时候,这个服务器会将一些 Key/Value 键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器. 当前 Cookie 有两个版本:响应头的标识分别是 “Set-Cookie”和“Set-Cookie2”.Cookies版本0(有时被称为Netscape Cookies)和Cookies版本1(RFC2965). Versio

java cookie

public static void AddCookie(HttpServletResponse response, String key, String value) { Cookie cookie = new Cookie(key, value); response.addCookie(cookie); } 如果是中文,需要对key值或者value值进行URLEncoder.encode(Name, "utf-8")进行编码.

PHP Java 设置cookie方法

  Java Cookie cookie = new Cookie(COOKIE_NAME, encrypt_cookieV); cookie.setMaxAge(60 * 60); cookie.setPath("/"); response.addCookie(cookie); PHP setcookie($cookie_name,$cookie_value,time()+3600*1,'',$headers['HOST']) PHP Java 设置cookie方法,布布扣,bubu

Selenium WebDriver 处理cookie

在使用webdriver测试中,很多地方都使用登陆,cookie能够实现不必再次输入用户名密码进行登陆. 首先了解一下Java Cookie类的一些方法. 在jsp中处理cookie数据的常用方法: getDomain():返回cookie的域名. getMaxAge():返回cookie的存活时间 getName():返回cookie的名字 getPath():返回cookie适用的路径 getSecure():如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返

Java:JSON解析工具-org.json

一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用. 2.查看相关的API文档,访问:https://github.com/douglascrockford/JSON-java. https

cookie,session以及ServletContext总结

首先来说Cookie : Cookie:保存到客户端的一个文本文件,与特定客户相关      Cookie以“名-值”对的形式保存数据      创建Cookie:new Cookie(name,value)      可以使用Cookie 的setXXX方法来设定一些相应的值            setName(String name)/getName()            setValue(String value)/getValue()            setMaxAge(in