struts2中HttpServletResponse的任何其他内置方法

时间:2013-10-18 04:48:11

标签: java json hibernate servlets struts2

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

任何人都可以告诉我一些解决方案吗

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

2 个答案:

答案 0 :(得分:1)

在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

答案 1 :(得分:0)

您可以在操作类中实现ServletResponseAware接口。这将使框架为您提供响应。