Struts2 拦截器开发步骤

1 编写目标Action类

package com.yiidian.action;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 需要拦截的目标Action
 * @author 一点教程(yiidian.com)
 */
public class Demo1Action extends ActionSupport{

	@Override
	public String execute() throws Exception {
		System.out.println("2.目标对象:Demo1Action");
		return SUCCESS;
	}
}

2 编写拦截器类

package com.yiidian.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
/**
 * 拦截器
 * @author 一点教程(yiidian.com)
 */
public class MyInterceptor1 implements Interceptor{

	@Override
	public void destroy() {
	}

	@Override
	public void init() {
	}

	//拦截的方法
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("执行拦截器--1.在执行action之前");
		
		//执行action的方法
		invocation.invoke();
		
		System.out.println("执行拦截器--3.在执行action之后");
		
		return null;
	}

}

3 struts.xml配置拦截器

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">	
<struts>
	<package name="base" extends="struts-default" namespace="/">
		<!-- 1.定义拦截器 -->
		<interceptors>
			<interceptor name="myInterceptor1" class="com.yiidian.interceptor.MyInterceptor1"/>
		</interceptors>
		
		<action name="demo1" class="com.yiidian.action.Demo1Action">
			<!-- 2.使用拦截器 -->
		    <interceptor-ref name="myInterceptor1"/>	
			<result>/succ.jsp</result>
		</action>
	</package>
	
</struts>

4 访问测试

http://localhost:8080/ch02_03_struts2_interceptor/demo1.action

查看控制台输出

从输出可以看到,拦截器成功拦截了Demo1Action的执行!

5 局部拦截器配置

特点:只针对一个Action进行拦截

<action name="demo1" class="com.yiidian.action.Demo1Action">
		<!-- 局部拦截器的使用 -->
		   <interceptor-ref name="myInterceptor1"/>	
		<result>/succ.jsp</result>
</action>

6 全局拦截器配置

特点:对当前package下的所有Action都生效!

<package name="base" extends="struts-default" namespace="/">
		<interceptors>
			<interceptor name="myInterceptor1" class="cn.sm1234.interceptor.MyInterceptor1"/>
		</interceptors>
		
        <!-- 全局拦截器的使用 -->
		<default-interceptor-ref name="myInterceptor1"/>

 

源码下载:https://pan.baidu.com/s/1CiEmGa24kHTrpAKhCAbakw

热门文章

优秀文章