struts2自定义拦截器的示例代码
Struts2拦截器是开发中经常使用的功能,它能够在请求前或请求后进行一些操作,比如数据验证、权限校验等。Struts2框架提供了很多拦截器,但是如果这些拦截器不能满足我们的需求,我们就需要自定义拦截器了。
下面是一个简单的示例代码,展示如何自定义一个拦截器。
1. 创建一个类实现Interceptor接口
在这个示例中,我们创建了一个LoggingInterceptor类,它实现了Interceptor接口。Interceptor接口定义了三个方法,我们需要实现这三个方法。
public class LoggingInterceptor implements Interceptor {
public void init() {}
public String intercept(ActionInvocation invocation) throws Exception {
// 前置拦截
System.out.println("LoggingInterceptor的前置拦截");
// 调用Action
String result = invocation.invoke();
// 后置拦截
System.out.println("LoggingInterceptor的后置拦截");
return result;
}
public void destroy() {}
}
2. 在struts.xml文件中配置拦截器
在这个示例中,我们将自定义的LoggingInterceptor拦截器配置在了全局拦截器栈中。全局拦截器栈中的所有拦截器都会对所有的Action进行拦截。
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="loggingInterceptor" class="com.example.LoggingInterceptor" />
<interceptor-stack name="defaultStack">
<interceptor-ref name="loggingInterceptor" />
<interceptor-ref name="defaultInterceptor" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack" />
<action name="hello" class="com.example.HelloAction">
<result name="success">/WEB-INF/jsp/hello.jsp</result>
</action>
</package>
</struts>
3. 在Action中测试拦截器
在这个示例中,我们创建了一个HelloAction类,它继承自ActionSupport类。在这个Action中,我们只是简单地返回了一个字符串。
public class HelloAction extends ActionSupport {
public String execute() throws Exception {
return SUCCESS;
}
}
4. 运行程序并观察控制台输出
在运行程序后,我们可以在控制台中看到LoggingInterceptor的前置拦截和后置拦截输出的信息。
总结
自定义拦截器是Struts2框架中常用的功能,通过它可以实现很多自定义的业务逻辑。在本次示例中,我们简单地介绍了如何创建和配置自定义拦截器。但是,实际开发中可能会涉及到更多的问题,比如拦截器之间的顺序、如何在拦截器中传递数据等等。如果你想进一步深入学习Struts2拦截器的知识,建议学习Struts2的官方文档和相关书籍。
