struts2怎样实现一个替换处理请求的action的拦截器

举个例子,有两个struts2的action:OneAction和OtherAction,原本是OneAction处理某个请求(比如abc.action),现在我要在st... 举个例子,有两个struts2的action:OneAction和OtherAction,原本是OneAction处理某个请求(比如abc.action),现在我要在struts.xml中给OneAction配置一个拦截器,让abc.action请求由OtherAction处理,这个拦截器怎么实现(不要用过滤器实现)?在线等答案! 展开
 我来答
励丹寒0iQ
推荐于2016-10-14 · TA获得超过369个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:271万
展开全部
额,实现倒是没问题,可能有这方面的需求吧,我以前还没遇到过。
1. LoginActionInterceptor.java
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.StrutsStatics;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginActionInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = 1L;

@Override
public String intercept(ActionInvocation actioninvocation) throws Exception {

ActionContext actionContext = actioninvocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) actionContext
.get(StrutsStatics.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) actionContext
.get(StrutsStatics.HTTP_RESPONSE);
request.getRequestDispatcher("/homepage.jsp") // 此处亦可为XX.action
.forward(request, response);
return null;
}
}

不过需要注意的是,这种是属于forward方式,默认情况不能为struts2的filter拦截,所以需要在web.xml中为filter-mapping配置:
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
至于配置REQUEST,是为了让直接访问jsp或者action的方式也能被struts的核心filter拦截
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
youlinewlfe
2012-02-23 · 超过15用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:64万
展开全部
这个不用拦截器啊,你直接在struts.xml中将abc.action这个访问的请求重新配给OtherAction就行了啊
追问
你的方法当然可以,其实我只想问:怎样用拦截器实现把原来配置的action替换成另一个action处理请求?而不是为了解决这个问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式