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

struts2官方教程学习总结——拦截器

 
阅读更多

拦截器的工作流程:

 

下面的就是当一个请求到struts2的时候,框架所做的事情:

框架首先寻找去调用哪一个Action class去处理request,并且会通过action配置去寻找要执行的过滤器。

现在过框架会生成一个ActionInvocation的实例并且会去执行invoke()方法。此时此刻,框架会将控制权转交给ActionInvocation以进行将来的处理。

ActionInvocation会将action和interceptors进行封装,并且知道拦截器将以怎样的次序被调用。

ActionInvocation会调用拦截器栈中的第一个拦截器的interceptor方法,下面就是LoggingInterceptor’s的interceptor()方法,它包含有以下的内容:

public String intercept(ActionInvocation invocation) throws Exception

{

//Pre processing

logMessage(invocation, START_MESSAGE);

String result = invocation.invoke();

//Post processing

logMessage(invocation, FINISH_MESSAGE);

return result;

}

正如所代码所展示的,当logMessage()方法被调用后,ActionInvocation会调用下一个拦截器的interceptor()方法,就这样循环重复着,直到栈中最后一个拦截器被调用。

当所有的拦截器都被调用之后,就会去调用action类中的指定的处理函数(默认为execute()方法),执行完后会返回一个结果对应的视图信息。

但是如果任何一个验证器检验出有错误发生,在这种情况下,请求就会被终止。以后的过滤器都不会被调用,并且action也不会被执行。同时控制流就会发生改变:到现在为止,已经执行的过滤器就会以相反的顺序传递处理结果,然后返回给用户。

现在我们考虑一下当执行完action后的操作,同样看LoggingMessage中的intercept方法,当执行完invoke方法后,就会继续执行下面的一个logMessage(invocation, FINISH_MESSAGE);然后将结果返回给前一个执行的过滤器,依次循环,所有的过滤器都完成,然后将结果返回给用户。

 

通过框架的过滤器机制,我们可以进行如下的操作和好处:

1、 更加灵活的操作用户的请求

2、 可以专心的处理用户的请求(即专注于Action中的处理请求函数,及其后台操作)

3、 加强了核心代码的可读性以及可重用性

4、 更加方便的进行项目测试

5、 我们可以只增加自己需要的过滤器到过滤器栈中去处理用户的请求


分享到:
评论

相关推荐

    Struts2的拦截器——Struts2拦截器的基础知识.pptx

    Struts2的拦截器——Struts2拦截器的基础知识

    Struts2 的核心——拦截器[Interceptor]

    NULL 博文链接:https://wang4717.iteye.com/blog/796941

    Struts2拦截器的实现原理(csdn)————程序.pdf

    Struts2拦截器的实现原理(csdn)————程序

    Struts 2的基石——拦截器(Interceptor)

    NULL 博文链接:https://chenyajie.iteye.com/blog/1980865

    在struts1中使用拦截器——saif-0.1.jar

    在struts1中使用拦截器——----------------------------------------------------saif-0.1.jar

    Struts拦截器案例——登陆

    Struts拦截器的案例,没有使用Hibernate,使用的是JDBC,该代码的核心实现是拦截器,至于数据库可根据个人需求进行修改。

    个人认为目前最完备的Struts2教程

    07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 Struts 2的新表单标志的使用 13 Struts 2与AJAX

    理解拦截器用于在某个方法或字段被访

    谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链

    struts2.0中文教程

    07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    Struts2.0中文教程权威版

    07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX Struts2中用...

    Struts2拦截器实例.docx

    Struts2拦截器实例——登录校验,登录校验拦截器除了登录请求不被拦截,对用户的所有其他请求进行拦截。对没有登录的用户如果访问其他需要用户的页面进行页面跳转,从新跳转回登录页面。进行登录操作。

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全...Struts 2的基石——拦截器(Interceptor) 在Struts 2中实现IoC 在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX

    Struts2例子10

    example10:Struts 2的基石——拦截器

    Struts2 in action中文版

    4.3 研究内建的Struts 2拦截器 67 4.3.1 工具拦截器 67 4.3.2 数据转移拦截器 67 4.3.3 工作流拦截器 69 4.3.4 其他拦截器 72 4.3.5 内建的拦截器栈 73 4.4 声明拦截器 74 4.4.1 声明独立的拦截器和拦截器栈 74 ...

    深入浅出struts2

    开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题——可以通过插件机制...

    非常不错的中文struts2教程[CHM]

    内容: 1、OGNL —— 数据运转的催化剂 2、Result机制,让视图更丰富 3、Struts2配置详解 4、Struts2中的Action ...7、拦截器详解 8、配置,灵活还是简单? 9、深入plugin 10、在Struts2中使用OGNL

    struts2[1].0标签详解

    Struts 2的基石——拦截器(Interceptor);在Struts 2_0中国际化(i18n)您的应用程序;在Struts 2_0中实现表单数据校验(Validation);Struts 2与AJAX;在Struts 2中实现IoC......

    struts2入门实例1

    struts2 最新的入门实例 我自己总结的 呵呵,欢迎提出宝贵的意见 1.Struts2_01_login 对应登录。。 login.jsp---------------------------------------html标签的登陆页面 login_struts2.jsp--------------...

    struts2入门实例2 经典入门必备

    1.Struts2_01_login 对应登录。。 ... login_struts2.jsp-------------------------------采用struts标签的登陆页面 ...2.Struts2_03_TypeConverter ... 拦截器 17.Struts2_09up&down 上传和下载

Global site tag (gtag.js) - Google Analytics