Struts 2でHttpServletRequestを取得する方法

Struts 2でHttpServletRequestを取得する方法

Struts 2では、次の2つのメソッドを使用してHttpServletRequestオブジェクトを取得できます。

1. ServletActionContext

HttpServletRequestオブジェクトをorg.apache.struts2.ServletActionContextから直接取得します。

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;

public class LocaleAction{
    //business logic
    public String execute() {
        HttpServletRequest request = ServletActionContext.getRequest();
        return "SUCCESS";
    }
}

2. ServletRequestAware

クラスにorg.apache.struts2.interceptor.ServletRequestAwareを実装させます。

Struts 2 'servlet-config'インターセプターは、アクションクラスがServletRequestAwareインターフェイスに実装されていることを確認すると、setServletRequest()メソッドを介して要求されたアクションクラスへのHttpServletRequest参照を渡します。 。

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;

public class LocaleAction implements ServletRequestAware{

    HttpServletRequest request;

    //business logic
    public String execute() {
        String param = getServletRequest().getParameter("param");
        return "SUCCESS";

    }

    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }

    public HttpServletRequest getServletRequest() {
        return this.request;
    }
}

Struts 2のドキュメントでは、ServletActionContextではなくServletRequestAwareをお勧めします。