Struts2 在Struts 2拦截器中获取HttpServletRequest

Struts2 在Struts 2拦截器中获取HttpServletRequest,struts2,struts2-interceptors,Struts2,Struts2 Interceptors,要在拦截器中获取HttpServletRequest,我使用了以下代码: HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST); 我试图在拦截器中实现ServletRequestAware,但没有成功 有没有更好的方法在拦截器中获取HttpServletRequest 您将获得ActionInvocation trygetInvocationContext()它

要在拦截器中获取
HttpServletRequest
,我使用了以下代码:

HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST);
我试图在拦截器中实现
ServletRequestAware
,但没有成功


有没有更好的方法在拦截器中获取
HttpServletRequest

您将获得ActionInvocation try
getInvocationContext()
它将返回“ActionContext”的实例try
.get(HTTP\U请求)在这上面

使用


您需要使用
ActionInvocation#getInvocationContext()
来检索您的请求

public String intercept(ActionInvocation invocation) throws Exception {
    ActionContext context = invocation.getInvocationContext();
    HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
    // ...
}

引用
servletConfig
interceptor可以获得的servlet内容。调用此拦截器后,您可以从
ServletActionContext
获取servlet内容

HttpServletRequest request = ServletActionContext.getRequest();
使用


它对我很有用

为什么在拦截器中需要
HttpServletRequest
?我想开发一个拦截器,防止Ajax请求直接通过url调用。请看。此拦截器将位于拦截器堆栈中,这将阻止这些请求。这应该是在拦截器内部使用的批准答案。
HttpServletRequest request = ServletActionContext.getRequest();
final HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
                                               .get(ServletActionContext.HTTP_REQUEST);