如何在Struts 2中使用cookie

时间:2013-07-18 04:00:48

标签: jsp java-ee cookies struts2

我正在使用cookie来避免havind SID(会话ID)。我尝试使用以下方法设置cookie并在我的jsp文件中检索它,如图所示,但它不起作用。它只显示HelloSESSIONID。

Java

public class Users {

 public void setcookie(){
      Cookie user = new Cookie("User","Miro");
      user.setMaxAge(60*60);
 }

Jsp

<%@ page language="java"%>
<% Cookie cookies[] = request.getCookies(); 

           for (int i=0; i<cookies.length; i++) 
       {

        out.println("Hello"+cookies[i].getName()+ "> ");
       }
            %>

3 个答案:

答案 0 :(得分:2)

Cookie user = new Cookie("User","Miro");
user.setMaxAge(60*60);

你也必须发送cookie:

response.addCookie(user);

答案 1 :(得分:2)

以下是使用Struts 2的Cookie的示例。

public class MyAction extends ActionSupport implements ServletResponseAware, ServletRequestAware {

      public int division;

      public String execute() {

        // Load from cookie
        for(Cookie c : servletRequest.getCookies()) {
          if (c.getName().equals("cookieDivision"))
            division=Integer.parseInt(c.getValue());
        }

        // Save to cookie
        Cookie div = new Cookie("cookieDivision", String.format("%d",division));
        div.setMaxAge(60*60*24*365); // Make the cookie last a year
        servletResponse.addCookie(div);

        return "success";
      }

      // For access to the raw servlet request / response, eg for cookies
      protected HttpServletResponse servletResponse;
      @Override
      public void setServletResponse(HttpServletResponse servletResponse) {
        this.servletResponse = servletResponse;
      }

      protected HttpServletRequest servletRequest;
      @Override
      public void setServletRequest(HttpServletRequest servletRequest) {
        this.servletRequest = servletRequest;
      }
    }

答案 2 :(得分:0)

您需要为Cookie定义路径。 例如,要使其在应用程序的所有页面中都可访问,请使用以下

 user.setPath("/");
 or
 user.setDomain("example.com");