读书人

关于struts2拦截器功能原理有关问题

发布时间: 2012-09-06 10:37:01 作者: rapoo

关于struts2拦截器功能原理问题?
众所周知,struts2拦截器主要功能是实现对action请求的拦截,当从jsp页面发送数据到action时,先经过拦截器进行处理,我现在有个疑问是struts2是不是只能针对于action进行拦截,如果是某个地址页面呢?它还能实现拦截的功能吗?
比如经常用到的权限验证问题,如果用户没有登录,那直接打开任何登录后的页面将会跳到登录首页,这是由拦截器来实现的,但是,大多数页面打开时并不能向action发送请求啊,那拦截器怎么去拦截?

[解决办法]
我现在有个疑问是struts2是不是只能针对于action进行拦截,如果是某个地址页面呢?它还能实现拦截的功能吗?

这个是根据你自己配置核心控制器来的,如果参数是/* 那就表示拦截所有的请求,假如是某个地址的页面,也会拦截,去找有不有满足条件的action,没有的话 就按路径跳转。
如果是*.action 那就只会拦截action 。

判断用户是否登录 ,这个可以自己定义一个拦截器嘛 ,


Java code
import com.chenghui.entity.User;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.AbstractInterceptor;/** * 验证用户是否登录 * @author Administrator * */public class CheckIsLoginInterceptor extends AbstractInterceptor{    private static final long serialVersionUID = 5572804837134361839L;    @Override    public String intercept(ActionInvocation actionInvocation) throws Exception {        User user = (User)actionInvocation.getInvocationContext().getSession().get("user");                if(user==null){            ActionContext.getContext().getSession().put("loginMessage", "请先登录!");            return Action.LOGIN;        }        return actionInvocation.invoke();    }} 

读书人网 >J2EE开发

热点推荐