struts2.0拦截器

1Struts Intercept 介绍:

Struts2的拦截器和Servlet过滤器类似。在执行Actionexecute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Actionexecute方法。

Struts2拦截类实现com.opensymphony.xwork2.interceptor.Interceptor接口或extends AbstractInterceptor ,在Intercepter接口中有如下三个方法需要实现: void destroy(); void init(); String intercept(ActionInvocation invocation) throws Exception;

其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用这个方法。在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timerparams等。如果在<package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。

 

2Struts2提供MethodFilterInterceptor类,该类是AbstractInerceptor的子类,可以实现对Action方法的拦截.  MethodFilterInterceptor中有两个方法    setExcludeMethods:排除需要过滤的方法      setIncludeMethods:设置需要过滤的方法      如果一个方法同时在excludeMethodsincludeMethods中出现,则会被拦截

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

 

public class TestMethodIntercept extends MethodFilterInterceptor {

 

    private static final long serialVersionUID = 1L;

 

    @Override

    protected String doIntercept(ActionInvocation actionInvocation) throws Exception {

            System.out.println("拦截器名称:");  

            System.out.println("action:" + actionInvocation.getAction());  

            return actionInvocation.invoke();  

 

    }

}

配置:

<package name="Struts2_CRUD_DEMO" extends="struts-default"

       namespace="/Book">

       <interceptors>

           <!-- 自定义拦截器 -->

           <interceptor name="testInterceptor"

              class="tutorial.intercept.TestIntercept" />

              <interceptor name="testMethodInterceptor"

                         class="tutorial.intercept.TestMethodIntercept" >

               <!-- 设置需要拦截的方法,指定多个方法以逗号隔开 --> 

                    <param name="includeMethods">list,load</param>

                      <!-- 设置不需要拦截的方法,executeincludeMethods中同时存在,execute会被拦截 -->

                  <param name="excludeMethods">store</param> 

              </interceptor>

           <!-- 拦截器栈 -->

           <interceptor-stack name="appStack">

               <interceptor-ref name="testInterceptor" />

              <!-- struts2自身拦截器 -->

              <interceptor-ref name="defaultStack" />

               <interceptor-ref name ="timer" />

                <interceptor-ref name ="testMethodInterceptor" />

           </interceptor-stack>

 

       </interceptors>

      

       <default-interceptor-ref name="appStack"></default-interceptor-ref>

      

       <global-results>

           <result name="root">/exception.jsp</result><!-- /指向book包外的页面 -->

       </global-results>

       <global-exception-mappings>

           <exception-mapping exception="common.MyException"

              result="root" />

       </global-exception-mappings>

 

      

       <action name="List" class="bookAction" method="list">

           <result>List.jsp</result>

       </action>

       <action name="Edit" class="bookAction" method="load">

           <result>Edit.jsp</result>

       </action>

       <action name="Store" class="bookAction" method="store">

               <!-- 配置拦截器栈 -->

             <interceptor-ref name="appStack"/>

           <result type="redirect">List.action</result>

           <result name="input">Edit.jsp</result>

       </action>

       <action name="Remove" class="bookAction" method="remove">

           <result type="redirect">List.action</result>

       </action>

   </package>

注意:当我们自定义拦截器后,发现,struts2自身的拦截器却不起作用了。这里因为我们的拦截器覆盖了struts2自身的拦截器(defaultStack)的原因造成的。解决方法是,配置一个拦截器栈,将struts2自身的拦截器配置进去即可。

 

 

3. Struts2XWork)提供的拦截器的功能说明:

 

拦截器

名字

说明

Alias Interceptor

alias

在不同请求之间将请求参数在不同名字件转换,请求内容不变

Chaining Interceptor

chain

让前一个Action的属性可以被后一个Action访问,现在和chain类型的result<result type=”chain”>)结合使用。

Checkbox Interceptor

checkbox

添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox

Cookies Interceptor

cookies

使用配置的name,value来是指cookies

Conversion Error Interceptor

conversionError

将错误从ActionContext中添加到Action的属性字段中。

Create Session Interceptor

createSession

自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。

Debugging Interceptor

debugging

提供不同的调试用的页面来展现内部的数据状况。

Execute and Wait Interceptor

execAndWait

在后台执行Action,同时将用户带到一个中间的等待页面。

Exception Interceptor

exception

将异常定位到一个画面

File Upload Interceptor

fileUpload

提供文件上传功能

I18n Interceptor

i18n

记录用户选择的locale

Logger Interceptor

logger

输出Action的名字

Message Store Interceptor

store

存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。

Model Driven Interceptor

model-driven

如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。

Scoped Model Driven

scoped-model-driven

如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用ActionsetModel方法将其放入Action内部。

Parameters Interceptor

params

将请求中的参数设置到Action中去。

Prepare Interceptor

prepare

如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。

Scope Interceptor

scope

Action状态存入sessionapplication的简单方法。

Servlet Config Interceptor

servletConfig

提供访问HttpServletRequestHttpServletResponse的方法,以Map的方式访问。

Static Parameters Interceptor

staticParams

struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。

Roles Interceptor

roles

确定用户是否具有JAAS指定的Role,否则不予执行。

Timer Interceptor

timer

输出Action执行的时间

Token Interceptor

token

通过Token来避免双击

Token Session Interceptor

tokenSession

Token Interceptor一样,不过双击的时候把请求的数据存储在Session

Validation Interceptor

validation

使用action-validation.xml文件中定义的内容校验提交的数据。

Workflow Interceptor

workflow

调用Actionvalidate方法,一旦有错误返回,重新定位到INPUT画面

Parameter Filter Interceptor

N/A

从参数列表中删除不必要的参数

Profiling Interceptor

profiling

通过参数激活profile

 

 

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值