`

struts2--拦截器

 
阅读更多

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指业务问题

分享到:
评论

相关推荐

    struts2-showcase.rar

    2. **拦截器(Interceptors)**:Struts2的核心功能之一,拦截器可以插在Action调用之前和之后,实现如日志、事务管理、验证等通用功能,增强了代码的可复用性。 3. **动态方法调用(Dynamic Method Invocation,DMI...

    struts2-core-2.0.12.jar

    Struts2的配置主要在struts.xml文件中进行,这里定义了Action的映射、结果类型、拦截器栈等。开发者可以通过XML或注解方式来配置Action,使应用更加灵活。 **4. 拦截器(Interceptors)** 拦截器是Struts2的一大...

    Struts2--自定义拦截器

    自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...

    struts2-json-plugin源码

    4. **拦截器**:Struts2的拦截器机制允许在Action调用前后执行特定逻辑。JSON插件可能包含用于处理JSON请求和响应的拦截器,比如处理JSON参数的解析和验证。 5. **Action与模型驱动**:如果Action使用模型驱动模式...

    struts2-2拦截器与SiteMesh

    struts2-2拦截器与SiteMeshstruts

    struts-2.5所有jar包

    - **拦截器**:拦截器是Struts2的核心机制之一,通过定义拦截器链,可以实现如权限验证、日志记录、性能监控等功能。 - **配置方式**:可以选择传统的XML配置,也可以使用更加灵活的注解和Conventions配置。 - **...

    struts2-016/017漏洞解决

    使用预定义的拦截器或自定义拦截器来检查和清理输入。 4. **安全编码实践**:遵循安全编码的最佳实践,避免在应用程序中直接使用不受信任的数据。尽量避免使用可能导致代码执行的OGNL表达式,除非已经进行了充分的...

    Struts2-2.5.13最新jar下载

    2. **Interceptor**:拦截器是Struts2的一个重要特性,它们是插件式的,可以插入到Action调用流程中,实现如日志、权限检查、事务管理等通用功能。 3. **Result**:结果是Action执行后返回的对象,通常用于渲染视图...

    struts2--4.拦截器

    在Struts2中,拦截器扮演着核心角色,极大地增强了框架的功能和灵活性。本文将深入探讨Struts2中的拦截器,以及如何使用它们来优化应用的性能和功能。 ### 1. 拦截器的概念 拦截器是Struts2框架的一个关键特性,它...

    struts2-core-2.3.7源码

    3. **Interceptor(拦截器)**: 拦截器是Struts2的核心特性,它们按照预设的顺序执行,可以在Action执行前后进行额外的操作,如日志记录、权限检查等。 4. **Value Stack**: 用于存储Action实例和其他Action上下文...

    struts2-tags-文档.rar

    "struts2.chm"可能是Struts2的基础教程,涵盖了框架的基本概念、配置、动作、拦截器等核心组件。在这个文档中,你可以了解到如何设置Struts2的配置文件,如何创建Action类,以及如何使用拦截器进行业务逻辑处理。...

    struts2-拦截器

    struts2-拦截器 struts2的核心

    struts2-2.3.4.1-all

    2. **拦截器(Interceptor)**:这是Struts2的一个强大特性,它可以拦截Action调用前后,实现事务管理、日志记录、权限验证等功能。通过配置拦截器栈,开发者可以灵活控制请求处理流程。 3. **OGNL(Object-Graph ...

    struts2-core-2.2.1 jar下载、源码下载 非常全面!!绝对可用!! 所需资源分最少。

    Struts2的核心组件是`struts2-core.jar`,这个文件是整个框架的基础,包含了处理请求、调度、拦截器等核心功能。`struts2-core-2.2.1`版本是Struts2的一个特定发行版,可能包含了一些特定的改进和修复。 在Java Web...

    struts2-lib.zip

    2. **拦截器**:Struts 2的拦截器是AOP(面向切面编程)概念的应用,允许在Action执行前后插入自定义逻辑,如日志、权限验证、性能统计等。这些拦截器通过在struts.xml中配置并组合成拦截器栈。 3. **Action**:...

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

    Struts2的核心功能包括动作映射、结果处理、数据绑定、拦截器等。它的Action类负责处理HTTP请求,而配置文件(如struts.xml)定义了这些Action及其对应的结果页面。Struts2还支持OGNL(Object-Graph Navigation ...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    - **Interceptor(拦截器)**:这些是Struts2中的重要组件,它们在Action调用前后执行,提供了事务控制、日志记录、权限验证等功能。 - **配置文件**:通常有struts.xml或类似的配置文件,用于定义Action、结果...

    struts2-core-2.3.32和xwork-core-2.3.32

    XWork则是Struts2的基础框架,提供了一系列底层功能支持,如类型转换、拦截器机制等。 标题提到的"struts2-core-2.3.32"和"xwork-core-2.3.32"是Struts2框架的重要组成部分。"struts2-core-2.3.32.jar"包含了Struts...

    struts2-convention-plugin-2.1.6.jar

    `struts2-convention-plugin`的核心概念是“约定优于配置”(Convention over Configuration),这意味着框架会基于一定的默认规则自动配置Action、结果页面、拦截器等,减少了显式配置的工作量。在传统的Struts2...

    Struts2开发包struts2-blank-2.2.1

    Struts2是一个强大的Java web应用程序开发框架,它提供了一种结构化的方式来组织MVC...这个版本也体现了Struts2的灵活性和扩展性,因为它允许开发者自定义Action、Result类型和拦截器,以满足各种复杂的应用需求。

Global site tag (gtag.js) - Google Analytics