struts中拦截器的开发
2016-06-02 14:28
501 查看
1.开发Interceptor类
用户自定义的拦截器一般需要继承AbstractInterceptor类,重写intercept方法public class UserInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation actionInvocation) throws Exception { //拿到当前执行的方法名,如果当前方法名不是login,就进行验证 //获取actioncontext对象 ActionContext actionContext = actionInvocation.getInvocationContext(); //获取action的代理对象 ActionProxy proxy = actionInvocation.getProxy(); String methodName = proxy.getMethod(); if(!"login".equals(methodName)) { //先获取当前登录的用户 Object userInfo = actionContext.getSession().get("userInfo"); if(userInfo == null) return "input"; else return actionInvocation.invoke(); }else{ //说明当前用户正在登录 return actionInvocation.invoke(); } } }
2.配置拦截器
配置拦截器栈<interceptors> <interceptor name="userInterceptor" class="com.juaner.login.UserInterceptor"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="userInterceptor"/> </interceptor-stack> </interceptors>
执行拦截器
<default-interceptor-ref name="myStack"></default-interceptor-ref>
3.拦截器的生命周期
服务器启动时,执行所有拦截器的创建,调用拦截器的init()方法;用户访问时,首先创建Action实例;
然后执行拦截器的intercept()方法,该方法只有一个参数:ActionInvocation的对象actionInvocation。在该方法中调用actionInvocation.invoke()方法执行下一个拦截器;(类似于过滤器中的filterChain.doFilter()方法);
invoke()方法链最后会执行Action的execute()方法;
最后执行拦截器intercept()方法中invoke()后的语句;
相关文章推荐
- Struts2实现文件下载功能代码分享(文件名中文转码)
- jpush第三篇(服务端方法介绍)
- Java 虚拟机结构分析
- Spring之乐观锁简单理解和实例
- Java集合的10个最常见问题
- Java内存区域与内存溢出(JVM)
- Java Mvn 添加依赖的jar包
- Struts2实现生成动态验证码并验证实例代码
- Spring AOP动态代理-切面
- java web taglib自定义标签的练习
- myeclipse项目过大打开弹警告窗口
- 多线程学习(十一)新特征-线程池
- Java EE之JDBC技术
- eclipse批量替换单词
- java arrays methods
- springmvc重定向后jsp如何获取其中的flashAttribute?
- JAVA打包范例
- #码神学习#JAVA第一天
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- xStream 学习笔记 - Java对象与XML相互转换简单示例