分类: 系统运维
2012-01-23 21:51:13
拦截器是Struts2的核心, Struts2的众多功能都是通过拦截器来实现的。
拦截器类似过滤器,以下是过滤器的工作原理图:(拦截器与其相同)
拦截器的配置:
1 编写实现Interceptor接口的类
2在struts.xml中定义拦截器(两个地方有新代码)
3在action中使用拦截器
TheInterceptor1.java
package com.shengsiyuan.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class TheInterceptor1 implements Interceptor
{
private String test ;
public String getTest()
{
return test;
}
public void setTest(String test)
{
this.test = test;
}
public void destroy()
{
// TODO Auto-generated method stub
}
public void init()
{
System.out.println("test:"+this.test);
}
public String intercept(ActionInvocation invocation) throws Exception
{
System.out.println("before");
String result = invocation.invoke();
System.out.println("after");
return result ;
}
}
struts.xml
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
">
shengsiyuan
action2
${username}
${password}
${usernameAndPassword}
//默认时,没指定时用此拦截器
当访问action1.jsp时,显示顺序:init—>before—>after
一旦定义了自己的拦截器,将其配置到action上后,我们需要在action的最后加上默认的拦截器栈:defaultStack。
在配置拦截器时,可赋值参数shengsiyuan ,这样就会直接调用TheInterceptor中的setTest方法,且在init之前执行。