`
海角七号
  • 浏览: 17462 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2的请求流程与源码分析

阅读更多

      Apache  Struts2是一个全新的、非常先进的Web应用程序框架,Struts2不只是原来Struts1框架的一个新版本,它基于备受崇敬的OpenSymphony WebWork框架,是一个全新的框架,Struts2实现MVC设计模式 的第二代Web应用程序架构,它建立在最佳实践以及被证明有效且呗社区广泛接受的设计模式 之上。

     使用Struts2框架时,了解Struts2的工作流程很重要,Struts2的请求流程如下:

  1. 客户端初始化一个指向Servlet容器的请求;
  2. 根据web.xml配置,请求首先经过ActionContextCleanUp过滤器,该过滤器为可选的,这个过滤器对于Struts2和其他框架的整合很有帮助,主要清理当前线程中的Actioncontext和Dispatcher;
  3. 请求经过插件过滤器,如SitMesh等过滤器;
  4. 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;
  5. 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy对象,将请求交给ActionProxy对象继续处理;
  6. ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;
  7. ActionProxy对象创建时,会同时创建一个ActionInvocation实例;
  8. ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Interceptor)的调用;
  9. 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result,Result通常是一个需要被表示的Jsp等,也可能是另一个Action链;
  10. 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;
  11. 根据Result对象信息,生成用户响应信息response,在生成响应过程中,可以使用Struts框架中继承的标签,在此过程中仍会涉及到ActionMapper。

       源码分析,请参考http://developer.51cto.com/art/201208/354943.htm

0
0
分享到:
评论

相关推荐

    Struts2请求处理流程及源码分析[整理].pdf

    Struts2请求处理流程及源码分析[整理].pdf

    Struts2请求处理流程及源码分析

    b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...

    源码基于JSP的博客系统(struts+hibernate+spring).rar

    Struts作为模型-视图-控制器(MVC)架构的一部分,负责处理Web层的请求和响应流程,简化了用户界面与后端逻辑之间的交互。Hibernate则提供了对象关系映射(ORM),将复杂的数据库操作封装成简单的Java对象处理,极大...

    Struts原理、开发及项目实施

    流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传...

    java_jsp项目源码_网上订餐系统(struts+spring+hibernate).rar

    **项目名称:** 网上订餐系统(Struts + Spring + Hibernate) **项目简介:** 本项目是一个基于Struts、Spring和Hibernate框架的网上订餐系统,旨在为餐厅提供一个高效、便捷的在线订餐解决方案。系统支持多种...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    探索JVM底层奥秘ClassLoader源码分析与案例讲解.wmv │ │ │ ├─3.锁、分布式锁、无锁实战全局性ID-悟空 │ │ 3.锁、分布式锁、无锁实战全局性ID-悟空.mp4 │ │ │ ├─4.SpringMvc深入理解源码分析 │ │ 4....

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    [2] 缑艳阳在计算机与网络发表说WebWork是比较领先的MVC框架之一,是OpenSymphony组织 的一个开放源码项目,致力于组件化和代码重用。[1] 1.2 Struts框架 2002年,国外C. Cavaness 专家认为Struts是一个典型的MVC...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    宿舍管理系统(ssh+jsp+mysql5.x)含文档

    系统后台选用了SSH框架来实现主要的业务逻辑,其中Struts2负责Web层的请求响应分发,Spring框架处理业务对象的生命周期及依赖关系,Hibernate用于对象关系映射和数据的持久化操作。前端采用了JSP技术结合JavaScript...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java开源包8

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包2

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java 面试题 总结

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    超级有影响力霸气的Java面试题大全文档

     Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...

    java开源包1

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

    java开源包11

    集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...

Global site tag (gtag.js) - Google Analytics