关于struts2拦截器功能原理有关问题
关于struts2拦截器功能原理问题?
众所周知,struts2拦截器主要功能是实现对action请求的拦截,当从jsp页面发送数据到action时,先经过拦截器进行处理,我现在有个疑问是struts2是不是只能针对于action进行拦截,如果是某个地址页面呢?它还能实现拦截的功能吗?
比如经常用到的权限验证问题,如果用户没有登录,那直接打开任何登录后的页面将会跳到登录首页,这是由拦截器来实现的,但是,大多数页面打开时并不能向action发送请求啊,那拦截器怎么去拦截?
------解决方案--------------------
我现在有个疑问是struts2是不是只能针对于action进行拦截,如果是某个地址页面呢?它还能实现拦截的功能吗?
这个是根据你自己配置核心控制器来的,如果参数是/* 那就表示拦截所有的请求,假如是某个地址的页面,也会拦截,去找有不有满足条件的action,没有的话 就按路径跳转。
如果是*.action 那就只会拦截action 。
判断用户是否登录 ,这个可以自己定义一个拦截器嘛 ,
众所周知,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(); } }