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"/>
热门文章
优秀文章