Struts Interceptor Example

一下文章节选择《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>

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2016-04-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一直在跳坑然后爬坑

RxJava2操作符之“Distinct”

我们创建了一个会发送1, 2, 1, 1, 2, 3, 4, 6, 4 这些item的被观察者 其中1,2,4都有重复的数字 然后用操作符distinct去...

762
来自专栏逢魔安全实验室

ISCC 2018 Writeup

ISCC 2018 CTF中,一些题目还是很不错的。但是需要吐槽的就是这个积分机制,私以为一次性放出所有题目而且反作弊机制完善的情况下动态积分这个方法很好。但是...

2514
来自专栏三流程序员的挣扎

RxJava 线程调度和源码阅读

通过 Scheduler 来控制被观察者在哪个线程发射,观察者在哪个线程接收。默认情况,发射时在哪个线程,接收就在哪个线程。

853
来自专栏安恒网络空间安全讲武堂

CTF逆向--安卓篇

题目(来源:Jarvis-OJ): Androideasy DD Android Easy DD - Android Normal FindPass Smali...

5716
来自专栏谦谦君子修罗刀

程序员面试闪充--iOS密码学

但凡一个有点追求的iOS开发,总得会点加密技术,要不然用户信息就有可能被其他人获取用来做一些对我们不利的事情。 视频地址: 密码学 一、base64 base6...

31210
来自专栏芋道源码1024

熔断器 Hystrix 源码解析 —— 命令执行(一)之正常执行逻辑

本文主要基于 Hystrix 1.5.X 版本 1. 概述 2. #applyHystrixSemantics(...) 3. TryableSemaphor...

4988
来自专栏Seebug漏洞平台

漏洞分析】Shiro RememberMe 1.2.4 反序列化导致的命令执行漏洞

概述 Apache Shiro 在 Java 的权限及安全验证框架中占用重要的一席之地,在它编号为550的 issue 中爆出严重的 Java 反序列化漏洞。下...

9455
来自专栏IT综合技术分享

在Ubuntu16.10上开启docker17.03.0-ce的https认证

$ openssl genrsa -aes256 -out ca-key.pem 4096

621
来自专栏Flutter入门到实战

RxJava 详解

我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ...

1401
来自专栏Linux驱动

14.QT-QFile文件,QBuffer缓冲区,QDir目录,QFileSystemWatcher文件系统监视

1783

扫码关注云+社区