1、拦截器相关基础类
Interceptor接口
--> AbstractInterceptor抽象类
--> MethodFilterInterceptor抽象类(支持方法过滤)
![](http://dl.iteye.com/upload/attachment/48797/45783809-16cb-375f-8ed3-a3e3e58ba4ca.jpg)
2、配置拦截器
<interceptor name="拦截器名" class="拦截器实现类">
3、使用拦截器
<interceptors>
<interceptor name="mySimple" class="com.cjm.SimpleInterceptor"/>
</interceptors>
<action name="login" class="com.cjm.LoginAction">
<result name="success">main.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="mySimple"/>
</action>
注意:一旦我们为Action显式指定了某个拦截器,则默认的拦截器就不再起作用,如果该Action需要使用默认拦截器,则必须手动配置该拦截器的引用。
4、实现拦截器类
public class SimpleInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation invocation)throws Exception{
//取得被拦截的Action实例
LoginAction action = (LoginAction) invocation.getAction();
//将控制权转给下一个拦截器,或者转给Action的execute方法
String result = invocation.invoke();
//返回逻辑视图名
return result;
}
}
5、带方法过滤特性的拦截器类
public class MyFilterInterceptor extends MethodFilterInterceptor{
private String name;
public void setName(String name){
this.name = name;
}
public String doIntercept(ActionInvocation invocation)throws Exception{
LoginAction action = (LoginAction) invocation.getAction();
String result = invocation.invoke();
return result;
}
}
<interceptors>
<interceptor name="myFilter" class="com.cjm.MyFilterInterceptor"/>
</interceptors>
<action name="login" class="com.cjm.LoginAction">
<result name="success">main.jsp</result>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="myFilter">
<param name="name">属性值</param>
<param name="excludeMethods">execute,view,edit</param>
<param name="includeMethods">add,list</param>
</interceptor-ref>
</action>
注意:如果excludeMethods参数和includeMethods参数同时指定了一个方法名,则拦截器会拦截该方法。
6、覆盖拦截器中特定拦截器的参数
语法: <拦截器名>.<参数名>
<interceptor-ref name="myFilter">
<param name="mySimple.name">新属性值</param>
</interceptor-ref>
7、拦截器中设置的参数在Action类中读取
在拦截器类中设置参数值:
valueStack.getContext().put("httpHelper", "参数值");
在Action类中读取该参数值:
ActionContext.getContext().getValueStack().findValue("httpHelper")
8、拦截结果的监听器
实现拦截结果的监听器必须实现PreResultListener接口,该监听器是通过手动注册在拦截器内部的。
invocation.addPreResultListener(new MyPreResultListener());
不要在PreResultListener监听器的beforeResult方法中通过ActionInvocation参数调用invoke方法。
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0004/8797/45783809-16cb-375f-8ed3-a3e3e58ba4ca-thumb.jpg)
- 大小: 24.3 KB
分享到:
相关推荐
Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、...Struts2_05Interceptor : Struts2拦截器的使用 Struts2_06FileUpload : Struts2上传文件的使用
在实际项目中,Struts2可以处理类型转换、文件上传下载、拦截器(Interceptor)防止重复提交等问题。Interceptor是Struts2中的重要特性,它允许在Action执行前后插入额外的处理逻辑,如登录验证、日志记录等。深入...
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
Struts2是一个强大的MVC(Model-...Struts2的核心配置文件是`struts.xml`,它负责定义Action、拦截器栈、结果类型、包配置等。在这个文件中,你可以声明你的Action类,定义它们对应的方法以及结果页面。例如: ```xml ...
NULL 博文链接:https://zhangzhi199129.iteye.com/blog/1593488
在实际开发中,还会涉及到Action类的编写、JSP页面的设计、结果类型(Result Types)的设置以及各种拦截器的运用,这些都是Struts 2.0笔记中的重要内容。 总结来说,Struts 2.0是为了解决Struts 1.x的问题而诞生的...
4. **强大的拦截器(Interceptor)机制**:拦截器是Struts2处理请求的关键,可以实现如认证、授权、事务管理等功能,无需在每个Action中重复编写代码。 5. **多种视图技术支持**:除了内置的FreeMarker模板引擎,...
1. Struts2 的概念和优点:Struts2 是在 WebWork2 基础发展而来的,具有无侵入式设计、提供拦截器、类型转换器、多种表现层技术和输入校验等优点。 2. Struts2 的架构设计:Struts2 框架的核心类库是 struts2-core-...
2. **拦截器机制**:Struts2引入了拦截器,允许开发者实现AOP(面向切面编程),例如进行权限验证、日志记录等,极大地提高了代码的可维护性和复用性。 3. **类型转换器**:Struts2内置了类型转换器,可以自动将...
NULL 博文链接:https://zhaolianyang.iteye.com/blog/870600
标签在Struts2配置文件中定义了一组相关的Action,它包含了Action的配置、拦截器栈、结果类型等。通过可以组织和分组Action,提高配置的可读性和可维护性。 五、Action: Action是Struts2的核心组件,它代表了应用...
以上内容仅是Struts2学习的一部分,实际开发中,你还需要掌握Action类的编写,配置文件的使用,拦截器的自定义,以及Struts2提供的各种结果类型和标签库的运用。通过深入理解和实践,你将能够熟练运用Struts2框架...
标签在Struts2配置文件中定义一组相关的Action,它可以包含多个Action配置、拦截器栈、结果类型等。Namespace通常是在标签内定义的,用于分组Action。 五、Action: Action是Struts2的核心组件,它代表了业务逻辑的...
通过`struts`标签,我们可以定义全局的常量和拦截器栈。 2. **Package**:包是Struts2中的一个关键概念,用于组织相关的Action和结果(Result)。包可以继承其他包,从而实现配置的复用和分层。`package`标签的属性...
适合新手借鉴的struts学习笔记,更适合一入门的老手借鉴,个人学习心得
首先,`struts.xml`是Struts2的核心配置文件,用于定义Action、拦截器、结果页面等。它遵循特定的DTD(文档类型定义),在这个例子中是`struts-2.3.dtd`。此文件中的配置会影响整个Struts2应用的行为。 在配置文件...
- `struts-default.xml`:Struts2框架默认加载的配置文件,定义了核心bean和拦截器,并自动包含在`struts.xml`中。 - 其他配置文件如`velocity.properties`、`struts-default.vm`和`struts-plugin.xml`,服务于特定...