`
Enjoyjavaeye
  • 浏览: 62548 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2拦截器的学习

阅读更多
一个拦截器和一个拦截器栈的定义
<interceptors>  
<interceptor name="authorize" class="com.struts2.interceptor.AuthorizeInterceptor" />  
<interceptor-stack name="appStack"> 
                  <!-- 你自定义的拦截器 --> 
    <interceptor-ref name="authorize"/>  
                  <!-- 系统内置的拦截器栈 --> 
       <interceptor-ref name="defaultStack"/> 
</interceptor-stack> 
</interceptors>  
<action name="forward" class="com.struts2.RequestForward"> 
       <interceptor-ref name="appStack"/> 
       <result name="index">index.jsp</result> 
        <result name="NOT_FOUND">not_found.jsp</result> 
</action>

-----------------------------------------------
public String intercept(ActionInvocation invocation) {   
  //do some job before invocation   
  //...   
  String result = invocation.invoke();   
  //do some job after invocation   
  //...   
  return result;   
}

----------------------------------------------------
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;


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

<package name="demo" extends="struts-default" > ... </package>

在struts-default.xml中有一个默认的引用,在默认情况下(也就是<action>中未引用拦截器时)会自动引用一些拦截器。这个默认的拦截器引用如下:



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

<interceptor-stack name="defaultStack">   
    <interceptor-ref name="exception"/>
    <interceptor-ref name="alias"/>
    <interceptor-ref name="servletConfig"/>
    <interceptor-ref name="prepare"/>
    <interceptor-ref name="i18n"/>
    <interceptor-ref name="chain"/>
    <interceptor-ref name="debugging"/>
    <interceptor-ref name="profiling"/>
    <interceptor-ref name="scopedModelDriven"/>
    <interceptor-ref name="modelDriven"/>
    <interceptor-ref name="fileUpload"/>
    <interceptor-ref name="checkbox"/>
    <interceptor-ref name="staticParams"/>
    <interceptor-ref name="params">
        <param name="excludeParams">dojo\..*</param>
    </interceptor-ref>
    <interceptor-ref name="conversionError"/>
    <interceptor-ref name="validation">
           <param name="excludeMethods">input,back,cancel,browse</param>
     </interceptor-ref>
     <interceptor-ref name="workflow">
            <param name="excludeMethods">input,back,cancel,browse</param>
     </interceptor-ref>
</interceptor-stack>

-----------------------------------------------------------------

通过请求调用Action的setter方法(params)


    当客户端的一个form向服务端提交请求时,如有一个textfield,代码如下:

<s:form action="first" namespace="/test">
   <s:textfield name="name"/>
   <s:submit/>
</s:form>



在提交后,Struts2将会自动调用first动作类中的setName方法,并将name文本框中的值通过setName方法的参数传入。实际上,这个操作是由params拦截器完成的,params对应的类是com.opensymphony.xwork2.interceptor.ParametersInterceptor。由于params已经在defaultStack中定义,因此,在未引用拦截器的<action>中是会自动引用params的,如下面的配置代码,在访问first动作时,Struts2是会自动执行相应的setter方法的。

<action name="first" class="action.FirstAction">

    ... ...

</action>


-----------------------------------------------------
方法过滤拦截器
<interceptor-ref name="myinterceptor2"> 
              <param name="includeMethods">execute,test</param> 
</interceptor-ref> 

includeMethods  包含execute,test这两个方法,结果执行了这个拦截器,如果改成excludeMethods ,就不会执行了,也可以再加下面的一个参数
<param name="excludeMethods">execute,test</param>
不排除execute,test这两个方法 可是又加入又排除到底执行吗?答案是执行的,必定结果是最能说明问题的!呵呵!
4
0
分享到:
评论

相关推荐

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    struts2拦截器应用小例子

    通过这个例子,你可以学习到如何创建、注册拦截器,以及如何在Struts2框架中构建拦截器栈,从而更灵活地管理应用程序的行为。 总结来说,Struts2的拦截器机制提供了强大的功能,允许开发者以声明式的方式控制请求的...

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    struts2拦截器学习小例子--实现权限控制

    (1)首先直接访问 http://localhost:8080/MyStudy/showAction,我们会发现直接访问myhome.jsp会转入登录页面提示...(2)这时候输入xiaoming 12345登录,进入welcom.jsp页面 (3)点击链接后成功进入myhome.jsp页面

    Struts2 拦截器过滤方法(二十八)

    在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨Struts2拦截器的工作原理、如何创建自定义拦截器以及它们在实际应用中的作用。 首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行...

    struts2.X 拦截器源码

    了解了拦截器的基本原理后,我们可以通过`Struts2.x 拦截器.avi`这个视频文件深入学习Struts2拦截器的实现细节,比如如何编写自定义拦截器、如何配置拦截器链、如何处理异常等。`readme.txt`可能是关于这个主题的...

    Struts1 拦截器(SAIF)的使用

    Struts1 框架是Java Web...总的来说,这个项目提供了一个学习和实践Struts1拦截器的实例,尤其是SAIF插件的应用。通过深入理解并动手运行此项目,你可以掌握如何在实际开发中利用拦截器来提高应用的灵活性和可维护性。

    struts拦截器的例子

    这个"struts拦截器的例子"提供了一个学习和理解拦截器工作原理的起点,非常适合对这一主题感兴趣的初学者。 Struts 2框架是MVC(Model-View-Controller)设计模式的一个实现,它允许开发者构建可维护、可扩展的Web...

    struts2拦截器实例

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它极大地简化了Java Web应用程序的开发。在Struts2框架中,拦截器扮演...通过学习和实践,开发者可以更好地理解和掌握Struts2拦截器的用法,提升开发效率和代码质量。

    Struts2 拦截器-v3

    通过深入学习"Struts2 拦截器-v3",开发者不仅可以理解Struts2框架的核心机制,还能掌握如何利用拦截器提升应用的灵活性和可扩展性。实践案例和动手练习将帮助巩固理论知识,提高实际开发技能。

    Struts2拦截器

    关于Struts2拦截器讲解比较详细的PPT,可以下来学习下~

    struts2拦截器示例

    Struts2是一个强大的Java EE应用程序框架,主要用于构建Web应用程序。拦截器是Struts2的核心特性之一,它在...通过学习和实践这个示例,你可以更深入地理解Struts2的拦截器机制,以及如何在实际项目中有效地利用它。

    浪曦struts2拦截器源码

    通过分析浪曦Struts2拦截器源码,我们可以学习如何编写和使用拦截器,理解Struts2的请求处理流程,以及如何通过拦截器优化和增强应用功能。这将有助于提升我们的Struts2开发技能,更好地应对实际项目中的挑战。 在...

    Struts2 拦截器 手动验证 或 自动验证 后台登录验证 源码

    2. 注册拦截器:在Struts2的配置文件(如struts.xml)中,将这个拦截器添加到默认栈或者自定义拦截器栈中。 3. 检查登录状态:在`intercept()`方法中,可以通过Session或者其他方式检查用户是否已登录,未登录则返回...

    struts2拦截器

    struts2拦截器的教程,可以深入学习struts2的原理

    struts2拦截器笔记

    通过深入学习 Struts2 的拦截器机制,开发者可以更好地理解框架的工作原理,并且能够定制化地处理业务需求,提高应用程序的效率和安全性。同时,这也为团队协作和代码规范提供了有力的支持。因此,熟悉并熟练运用...

    简单Struts2拦截器

    总之,简单Struts2拦截器是理解Struts2框架的关键部分,通过学习和实践,开发者能够有效地提升代码质量和项目维护性。对于初学者来说,从基础开始了解并掌握拦截器的用法,将有助于进一步探索Struts2的高级特性和...

    Struts拦截器案例——登陆

    Struts拦截器是Java Web开发中的一个重要概念,尤其在基于Struts2框架的应用中,它扮演着处理请求、验证输入、记录日志等关键角色。在这个"Struts拦截器案例——登陆"中,我们将深入探讨如何利用Struts拦截器实现...

    struts2中拦截器的使用

    Struts2是一个强大的Java Web框架,它通过提供一系列的拦截器(Interceptors)来实现灵活的控制...学习如何创建自定义拦截器,以及如何结合不同的拦截器来实现复杂的业务逻辑,对于提升Struts2框架的使用技能至关重要。

    struts2拦截器控制权限

    Struts2是一个强大的Java EE框架,它用于构建和维护可扩展且易于管理的企业级Web应用程序。在Struts2中,拦截器(Interceptor...通过不断学习和实践,你可以更熟练地运用Struts2拦截器来构建高效、安全的Web应用程序。

Global site tag (gtag.js) - Google Analytics