java對cookie的操作比較簡單,主要介紹下建立cookie和讀取cookie,以及如何設定cookie的生命週期和cookie的路徑問題。
建立一個無生命週期的cookie,即隨著瀏覽器的關閉即消失的cookie,代碼如下
1 |
HttpServletRequest request |
2 |
HttpServletResponse response |
3 |
Cookie cookie = new
Cookie("cookiename","cookievalue");
|
4 |
response.addCookie(cookie); |
下面建立一個有生命週期的cookie,可以設定他的生命週期
1 |
cookie = new
Cookie("cookiename","cookievalue");
|
3 |
cookie.setMaxAge(3600);
|
單位是秒!!!!!!!
5 |
//設定路徑,這個路徑即該工程下都可以訪問該cookie 如果不設定路徑,那麼只有設定該cookie路徑及其子路徑可以訪問
|
8 |
response.addCookie(cookie); |
下面介紹如何讀取cookie,讀取cookie代碼如下
1 |
Cookie[] cookies = request.getCookies();//這樣便可以擷取一個cookie數組
|
2 |
for(Cookie cookie : cookies){
|
3 |
cookie.getName();// get the cookie name
|
4 |
cookie.getValue();
// get the cookie value |
上面就是基本的讀寫cookie的操作。我們在實際中最好進行一下封裝,比如增加一個cookie,我們關注的是cookie的name,value,生命週期,所以進行封裝一個函數,當然還要傳入一個response對象,addCookie()代碼如下:
04 |
* @param name cookie名字
|
05 |
* @param value cookie值
|
06 |
* @param maxAge cookie生命週期 以秒為單位
|
08 |
public static void addCookie(HttpServletResponse response,String name,String value,int
maxAge){ |
09 |
Cookie cookie =
new Cookie(name,value);
|
11 |
if(maxAge>0) cookie.setMaxAge(maxAge);
|
12 |
response.addCookie(cookie);
|
讀取cookie的時候,為了方便我們的操作,我們希望封裝一個函數,只要我們提供cookie的name,我們便可以擷取cookie的value,帶著這個想法,很容易想到將cookie封裝到Map裡面,於是進行下面的封裝
04 |
* @param name cookie名字
|
07 |
public static Cookie getCookieByName(HttpServletRequest request,String name){
|
08 |
Map<String,Cookie> cookieMap = ReadCookieMap(request);
|
09 |
if(cookieMap.containsKey(name)){
|
10 |
Cookie cookie = (Cookie)cookieMap.get(name);
|
24 |
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
|
25 |
Map<String,Cookie> cookieMap =
new HashMap<String,Cookie>();
|
26 |
Cookie[] cookies = request.getCookies();
|
28 |
for(Cookie cookie : cookies){
|
29 |
cookieMap.put(cookie.getName(), cookie);
|