struts的拦截器:
1、流程:
访问action,首先到过滤器里面,分发到不同的action里面.在过滤器中执行一系列的拦截器;
2、过滤器与拦截器的区别:
过滤器:到目标资源之前进行过滤,可以过滤所有内容(action,jsp,html);拦截器:到目标资源之前进行拦截,只能拦截action;
3、拦截器的使用原理:
aop:面向方面编程,底层采用动态代理的方式
责任链模式:有一组操作,栓在一条线上,当一个操作执行完成之后,到下一个操作
4、拦截器的执行过程:
访问action时候,首先到StrutsPrepareAndExecuteFilter过滤器里面
[此类中有init方法:用来加载配置文件;doFilter方法:执行默认的拦截器],
在过滤器里面doFilter方法里面执行[executeAction方法执行拦截器]多个拦截器,
并生成当前action的代理的对象[
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
namespace, name, method, extraContext, true, false);
],当拦截器执行完成之后,执行invoke方法,执行下一个拦截器
5、拦截器的结构:
拦截器继承AbstractInterceptor类,这个类实现 Interceptor接口
在类中有三个生命周期的方法
init intercept destroy
拦截的逻辑写在 intercept方法里面
自定义拦截器:
1)、创建一个类继承AbstractInterceptor类
2)、重写intercept方法,在此方法中写拦截逻辑
3)、注册自定义的拦截器
/*
* 判断是否是登录?
* = 判断session里面是否有user对象,如果有登录,不存在没有登录
*/
public String intercept(ActionInvocation invocation) throws Exception {
//推荐使用得到 actionContext方式进行操作
ActionContext context = invocation.getInvocationContext();
//得到session里面的值
Object object = context.getSession().get("user");
//判断是否为空
if(object != null) { //已经登录
//执行下一个操作
return invocation.invoke();
} else {//没有登录
return Action.LOGIN;
}
}
注册拦截器:
声明拦截器:
(1)在action所在的package里面声明自定义的拦截器
<interceptors>
<interceptor name="loginInterceptor" class="cn.xxx.demo4.MyInterceptor"></interceptor>
</interceptors>
使用拦截器:
(2)在action里面使用声明的拦截器
<interceptor-ref name="loginInterceptor"></interceptor-ref>
(3)使用自定义拦截器,默认继承的拦截器会失效,需要显示的声明出来
<interceptor-ref name="defaultStack"></interceptor-ref>
第二种注册方式:
声明拦截器:
(1)在action所在包里面声明拦截器,定义stack,把拦截器的引入写在stack里面
<interceptors>
<interceptor name="loginInterceptor" class="cn.xxx.demo4.MyInterceptor"></interceptor>
<interceptor-stack name="myStackLogin">
<interceptor-ref name="defaultStack"></interceptor-ref>[***]
<interceptor-ref name="loginInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
使用拦截器:
(2)在action直接使用定义的stack就可以了
<interceptor-ref name="myStackLogin"></interceptor-ref>
addFieldError和addActionError区别
(1)addFieldError指表单输入数据有误
(2)addActionError指业务问题
相关推荐
2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...
Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...
自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...
4. **拦截器**:Struts2的拦截器机制允许在Action调用前后执行特定逻辑。JSON插件可能包含用于处理JSON请求和响应的拦截器,比如处理JSON参数的解析和验证。 5. **Action与模型驱动**:如果Action使用模型驱动模式...
struts2-2拦截器与SiteMeshstruts
- **拦截器**:拦截器是Struts2的核心机制之一,通过定义拦截器链,可以实现如权限验证、日志记录、性能监控等功能。 - **配置方式**:可以选择传统的XML配置,也可以使用更加灵活的注解和Conventions配置。 - **...
使用预定义的拦截器或自定义拦截器来检查和清理输入。 4. **安全编码实践**:遵循安全编码的最佳实践,避免在应用程序中直接使用不受信任的数据。尽量避免使用可能导致代码执行的OGNL表达式,除非已经进行了充分的...
2. **Interceptor**:拦截器是Struts2的一个重要特性,它们是插件式的,可以插入到Action调用流程中,实现如日志、权限检查、事务管理等通用功能。 3. **Result**:结果是Action执行后返回的对象,通常用于渲染视图...
在Struts2中,拦截器扮演着核心角色,极大地增强了框架的功能和灵活性。本文将深入探讨Struts2中的拦截器,以及如何使用它们来优化应用的性能和功能。 ### 1. 拦截器的概念 拦截器是Struts2框架的一个关键特性,它...
3. **Interceptor(拦截器)**: 拦截器是Struts2的核心特性,它们按照预设的顺序执行,可以在Action执行前后进行额外的操作,如日志记录、权限检查等。 4. **Value Stack**: 用于存储Action实例和其他Action上下文...
"struts2.chm"可能是Struts2的基础教程,涵盖了框架的基本概念、配置、动作、拦截器等核心组件。在这个文档中,你可以了解到如何设置Struts2的配置文件,如何创建Action类,以及如何使用拦截器进行业务逻辑处理。...
struts2-拦截器 struts2的核心
2. **拦截器(Interceptor)**:这是Struts2的一个强大特性,它可以拦截Action调用前后,实现事务管理、日志记录、权限验证等功能。通过配置拦截器栈,开发者可以灵活控制请求处理流程。 3. **OGNL(Object-Graph ...
Struts2的核心组件是`struts2-core.jar`,这个文件是整个框架的基础,包含了处理请求、调度、拦截器等核心功能。`struts2-core-2.2.1`版本是Struts2的一个特定发行版,可能包含了一些特定的改进和修复。 在Java Web...
2. **拦截器**:Struts 2的拦截器是AOP(面向切面编程)概念的应用,允许在Action执行前后插入自定义逻辑,如日志、权限验证、性能统计等。这些拦截器通过在struts.xml中配置并组合成拦截器栈。 3. **Action**:...
Struts2的核心功能包括动作映射、结果处理、数据绑定、拦截器等。它的Action类负责处理HTTP请求,而配置文件(如struts.xml)定义了这些Action及其对应的结果页面。Struts2还支持OGNL(Object-Graph Navigation ...
- **Interceptor(拦截器)**:这些是Struts2中的重要组件,它们在Action调用前后执行,提供了事务控制、日志记录、权限验证等功能。 - **配置文件**:通常有struts.xml或类似的配置文件,用于定义Action、结果...
XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...
`struts2-convention-plugin`的核心概念是“约定优于配置”(Convention over Configuration),这意味着框架会基于一定的默认规则自动配置Action、结果页面、拦截器等,减少了显式配置的工作量。在传统的Struts2...
Struts2是一个强大的Java web应用程序开发框架,它提供了一种结构化的方式来组织MVC...这个版本也体现了Struts2的灵活性和扩展性,因为它允许开发者自定义Action、Result类型和拦截器,以满足各种复杂的应用需求。