Struts Interceptor Example
时间:2022-05-03
本文章向大家介绍Struts Interceptor Example,主要内容包括7.6. Interceptor、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
一下文章节选择《netkiller java 手札》
http://www.netkiller.cn/java/struts/interceptor.html
7.6. Interceptor
7.6.1. Session
在 web.xml 文件中定义 Session 超时时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
创建拦截器程序
package cn.netkiller.interceptor;
import java.util.Map;
import java.lang.Override;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class SessionInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 8347994918002285514L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, Object> session = invocation.getInvocationContext().getSession();
if (session.isEmpty())
return "nosession"; // session is empty/expired
return invocation.invoke();
}
}
配置拦截器
<package name="mobile" extends="main" namespace="/mobile">
<global-results>
<result name="nosession" type="redirectAction">
<param name="actionName">Index</param>
<param name="namespace">/mobile</param>
</result>
</global-results>
<interceptor name="session" class="cn.netkiller.SessionInterceptor" />
<interceptor-stack name="sessionExpirayStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="session"/>
</interceptor-stack>
<default-interceptor-ref name="sessionExpirayStack" />
<action name="testAction" class="TestClass">
<interceptor-ref name="sessionExpirayStack" />
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
- Leetcode-Easy 101. Symmetric Tree
- 数据结构-栈的定义及python实现
- 【关关的刷题日记59】Leetcode 257 Binary Tree Paths
- 学大伟业 国庆Day2
- ECMAScript 6入门 - 变量的解构赋值
- 二叉排序树 python实现
- ES6新特性概览
- 数据结构-顺序表的定义及python实现
- 洛谷P1516 青蛙的约会
- python实现二叉树的创建和遍历
- python中numpy模块下的np.clip()的用法
- Leetcode-Easy 543. Diameter of Binary Tree
- Leetcode-Easy 572. Subtree of Another Tree
- 图解javascript this指向什么?
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- SpringMVC系列 MVC设计模式介绍+ SpringMVC的作用及其基本使用+组件解析+注解解析
- Spring系列之事务的控制 注解实现+xml实现+事务的隔离等级
- Greenplum集群扩容总结
- Leetcode刷题 237. 删除链表中的节点 两行代码实现
- Leetcode刷题 206. 反转链表 递归迭代两种方法实现
- MySQL索引和查询优化
- Elasticsearch:Index 生命周期管理入门
- springboot面试杀手锏-自动配置原理
- flink 1.11.2 学习笔记(1)-wordCount
- 我是如何开发维护8千多行代码组件的
- 我对JS延迟异步脚本的思考
- 大数据表查询优化 - 表分区
- 日志系统rsync和日志切割logrotate-Linux每日一练(9)
- Canvas 绘制点线相交
- Canvas监测雷达