session:
当新客户端发现一个HTTP请求时服务端会创建一个session.并分配一个sessionID作为服务端来客户端的识别,session对象会 保存在服务端.此时session对象处天NEW STATE状态,如果调用 session.isNew()则返回true. 当服务器处理完后,会将sessionID同reponse 一起传回客户端,并将其存到cookie中; 当客户端再发送请求的时候.会将sessionID连同request一起发送给服务端; 服务端再根据传过来的sessionID将这次request与保存在服务端的session对象联系起来.此时的session对象已不是NEW STATE状态. 这样循环多次.直到超时或销毁. 注:当禁用cookie时也是不能使用session的;cookie:
cookie是在客户端保存的方案.而session是在服务端保存的方案. 如果cookie不设定时间的话就表视它的生命周期为浏览器会话的期间,只要关闭IE,cookie就消失了 这种cookie被称为会话cookie.其一般不保存在硬盘上.而是保存在内存中. 如果设置了过期时间.那么浏览器会把cookie保存到硬盘中,再次打IE时会依然有效.直到它的有效期 超时; 注:存储在硬盘中的cookie可以在不同IE间共享;
工具类:
CookieTool (Cookie帮助类):
package com.utcsoft.common.cookie;
import java.util.HashMap;import java.util.Map;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieTool {
/**
* 设置cookie(接口方法) * @author 刘鹏 * @param response * @param name cookie名字 * @param value cookie值 * @param maxAge cookie生命周期 以秒为单位 */ public static void addCookie(HttpServletResponse response,String name,String value,int maxAge){ Cookie cookie = new Cookie(name,value); cookie.setPath("/"); if(maxAge>0){ cookie.setMaxAge(maxAge); } response.addCookie(cookie); } /** * 根据名字获取cookie(接口方法) * @author 刘鹏 * @param request * @param name cookie名字 * @return */ public static Cookie getCookieByName(HttpServletRequest request,String name){ Map<String,Cookie> cookieMap = ReadCookieMap(request); if(cookieMap.containsKey(name)){ Cookie cookie = (Cookie)cookieMap.get(name); return cookie; }else{ return null; } } /** * 将cookie封装到Map里面(非接口方法) * @author 刘鹏 * @param request * @return */ private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ Map<String,Cookie> cookieMap = new HashMap<String,Cookie>(); Cookie[] cookies = request.getCookies(); if(null!=cookies){ for(Cookie cookie : cookies){ cookieMap.put(cookie.getName(), cookie); } } return cookieMap; }}
在控制器添加HttpServletResponse httpResponse
给cookie赋值 CookieTool.addCookie(httpResponse , "你的cookie名称" ,“你的cookie值” , 0);
给cookie赋值 CookieTool.addCookie(httpResponse , "你的cookie名称" ,“你的cookie值” , 3600);
获取Cookie在jsp写:
<%
String ndoeId=null;
Cookie[] cookies = request.getCookies(); // 然后迭代之 if (cookies != null && cookies.length > 0) { //如果没有设置过Cookie会返回null for (Cookie cookie : cookies) { String name = cookie.getName(); // 找到需要的Cookie if (name.compareTo("XXXXX") == 0) { ndoeId=cookie.getValue(); } } }%>
$(document).ready(function() {
var mycookie="<%=mycookie%>";
alert(mycookie);
}