我正在使用以下代码使用struts2-hibernate获取json,在getZone方法中,我使用了HttpServletResponse response= (HttpServletResponse) ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);返回json。代码工作正常,但我有些困惑,想知道struts2中是否还有其他可以实现相同工作的对象,就像对HttpServletResponse使用其他struts2内置方法一样。

谁能告诉我一些解决方案

public void getZone() {
HttpServletResponse response= (HttpServletResponse) ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
try {
JSONObject zoneAreas = Hibernateclass.getZone(Id, organId);
response.getWriter().write(zoneAreas.toString());
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

在Struts2中,可以使用以下两种方法来获取HttpServletResponse对象

1)通过ServletActionContext访问HttpServletResponse

public String execute() {
        HttpServletResponse response = ServletActionContext.getResponse();

        return "SUCCESS";
    }


2)通过实现ServletResponseAware接口访问HttpServletResponse,并重写setServletResponse()方法。

public class LoginAction implements ServletResponseAware{

    HttpServletResponse response;

    //business logic
    public String execute() {
        Locale locale = getServletResponse().getLocale();
        return "SUCCESS";
    }

    public void setServletResponse(HttpServletResponse response) {
        this.response = response;
    }
    public HttpServletResponse getServletResponse() {
        return this.response;
    }
}


在Struts 2文档中,建议使用ServletResponseAware

10-05 22:12