public class FilterAction extends ActionSupport {
 private HttpServletRequest request = ServletActionContext.getRequest();
 private HttpSession session = request.getSession(); 
 public String decide() {
  String message = null;
  boolean isout = false;
  Cookie[] userLandCookie = request.getCookies();
  if(request.getParameter("out") != null){
   if(request.getParameter("out").equals("退出")) {
    session.removeAttribute("user");
    isout = true;
   }
  }
  
  if(session.getAttribute("user") == null) {
   
   if(userLandCookie != null && !isout) {
    
    Cookie cookie;
    for(int i=0;i<userLandCookie.length;i++) {
     if(userLandCookie[i].getValue().length() < 16){
      cookie = userLandCookie[i];
      request.setAttribute("message", cookie.getValue()+"c");
     }
    }
    }else {
     request.setAttribute("message", "|false|");
    }
  }else{
   User user = (User)session.getAttribute("user");
   request.setAttribute("message", user.getUsername()+"s");
   
  }
  return SUCCESS;
}}
这是一个action, 访问这个action后会返回到index.jsp页面上。
我想的是一旦访问这个action会检查是否存在某一个Cookie(目前这个Cookie是存在的),如果存在就把Cookie的值返回到index.jsp页面,如果不存在就返回“|false|”。但是为什么当我第一次访问这个action的时候 Cookie数组userLandCookie为空,不关闭浏览器再次访问的时候userLandCookie就有了值,重新打开一个新页面访问又没有了值。怎样做到第一次访问这个action,userLandCookie就能获得值,这种情况是不是跟request有关??还有一个就是怎样获得某一个具体的Cookie??
望各位大哥帮帮忙 感激不尽 还有
原Cookie 已经存在了 。。下面的代码是在另一个action中:
Cookie userLandCookie = new Cookie("username", this.getUser().getUsername());
    userLandCookie.setMaxAge(1209600);
    
    response.setContentType("text/html; charset=UTF-8");
    response.addCookie(userLandCookie);
在这儿设置了cookie 而且在保存Cookie的文件夹中也能找到。。为什么会有上面的情况?? 怎样解决??

解决方案 »

  1.   

    应该不会啊
      你把设置cookie时间这样设置下看看
       userLandCookie.setMaxAge(1209600);(没见过这样设置的。也许我孤陋寡闻了)
       改成
      userLandCookie.setMaxAge(60 * 60 * 24 * 14);//2周
      

  2.   

    还是不行啊~~ 刚看见 忘了不试了。。怎样解决啊~~  搞不懂  看人家用servlet可以 但是用struts action却不行  怎么办。。
      

  3.   

    用Action 会将Action的url 当做cookies的保存路径,这样 取得时候会不会路径有问题?这样跟实际的jsp路径 会不会有出入?