java读取cookie的问题
首先我已经把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--3895FE881678B0085D24BC54F43BE077
q7O_visitedfid--2
uchome_loginuser--liusheng
不知道为什么拿不到username和ticket两个cookie?
cookie java
[解决办法]
/** cookie的生命周期(一周) */
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;
}