gpt4 book ai didi

java - 在 Struts 2 和 Struts 中使用 cookie

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:49 25 4
gpt4 key购买 nike

我有以下(缩短的)struts2 操作:

public class MyAction extends BaseAction implements CookiesAware {

public String execute() {

if (cookiesMap.containsKey("BLAH"))
blah=Integer.parseInt(cookiesMap.get("BLAH"));

return "success";
}

// For handling cookies
Map<String, String> cookiesMap;
@Override
public void setCookiesMap(Map<String, String> cookiesMap) {
this.cookiesMap = cookiesMap;
}
}

当我执行“cookiesMap.containsKey”时出现空指针异常 - 在我看来似乎没有调用 setCookiesMap。我已经实现了 CookiesAware 接口(interface),所以我认为它应该被调用 - 我在这里错过了什么吗?

谢谢

最佳答案

struts 似乎只支持读取 cookie,您必须转到 servlet 响应才能真正设置一个 cookie。

最后,我选择完全绕过 struts2 cookie 支持,直接进入 servlet 请求/响应对象进行读取和写入:

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;
}
}

而且在 struts.xml 或 web.xml 中都不需要为此方法进行配置,这是一个额外的好处。所以我对这个解决方案很满意,即使它确实在光线不足的情况下绘制 struts2。

关于java - 在 Struts 2 和 Struts 中使用 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3350554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com