首先我已经把cookie写入客户端了,以下是截图:
读取cookie的java代码:private String getUsername(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
String username = "";
if(cookies!=null){
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
System.out.println(c.getName()+"--"+c.getValue());
if(c.getName().equalsIgnoreCase("username"))
{
username = c.getValue();
}
}
}
return username;
}
程序输出的cookie key/value如下:JSESSIONID--3895FE881678B0085D24BC54F43BE077q7O_visitedfid--2uchome_loginuser--liusheng不知道为什么拿不到username和ticket两个cookie?cookiejava
读取cookie的java代码:private String getUsername(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
String username = "";
if(cookies!=null){
for (int i = 0; i < cookies.length; i++)
{
Cookie c = cookies[i];
System.out.println(c.getName()+"--"+c.getValue());
if(c.getName().equalsIgnoreCase("username"))
{
username = c.getValue();
}
}
}
return username;
}
程序输出的cookie key/value如下:JSESSIONID--3895FE881678B0085D24BC54F43BE077q7O_visitedfid--2uchome_loginuser--liusheng不知道为什么拿不到username和ticket两个cookie?cookiejava
public static final int COOKIE_AGE = 604800000;/**
* 设置cookie
* @param name cookie名字
* @param value cookie值
*/
public static void addCookie(String name, String value) {
try {
Cookie cookie = new Cookie(name, URLEncoder.encode(value, CharEncoding.UTF_8));
cookie.setPath("/");
cookie.setMaxAge(COOKIE_AGE);
ResponseThreadLocal.get().addCookie(cookie);
} catch (Exception e) {
log.error("设置cookie", e);
}
} /**
* 根据名字获取cookie
* @param name cookie名字
* @return String
*/
public static String getCookie(String name) {
try {
Map<String, Cookie> cookieMap = ReadCookieMap();
if (cookieMap.containsKey(name)) {
Cookie cookie = (Cookie) cookieMap.get(name);
return URLDecoder.decode(cookie.getValue(), CharEncoding.UTF_8);
}
} catch (Exception e) {
log.error("根据名字获取cookie", e);
}
return "";
} // 将cookie封装到Map里面
private static Map<String, Cookie> ReadCookieMap() {
Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
Cookie[] cookies = RequestThreadLocal.get().getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
请问ResponseThreadLocal和RequestThreadLocal是什么变量啊?
在当前这个线程中取出response和request
线程,你懂的,把这两个对象放入线程中,不再局限于只能在servlet中使用,
而是你任何出现java代码的角落都可以使用这两个对象了
随便问一下的使用threadlocal失败了,出现了nullpointexception
代码如下:public static ThreadLocal<HttpServletResponse> responseThreadLocal = new ThreadLocal<HttpServletResponse>();
responseThreadLocal.get().addCookie(cookie);responseThreadLocal.get() 为null,知道什么原因呀~~