Apache Struts2是一个全新的、非常先进的Web应用程序框架,Struts2不只是原来Struts1框架的一个新版本,它基于备受崇敬的OpenSymphony WebWork框架,是一个全新的框架,Struts2实现MVC设计模式 的第二代Web应用程序架构,它建立在最佳实践以及被证明有效且呗社区广泛接受的设计模式 之上。
使用Struts2框架时,了解Struts2的工作流程很重要,Struts2的请求流程如下:
- 客户端初始化一个指向Servlet容器的请求;
- 根据web.xml配置,请求首先经过ActionContextCleanUp过滤器,该过滤器为可选的,这个过滤器对于Struts2和其他框架的整合很有帮助,主要清理当前线程中的Actioncontext和Dispatcher;
- 请求经过插件过滤器,如SitMesh等过滤器;
- 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;
- 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy对象,将请求交给ActionProxy对象继续处理;
- ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;
- ActionProxy对象创建时,会同时创建一个ActionInvocation实例;
- ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Interceptor)的调用;
- 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result,Result通常是一个需要被表示的Jsp等,也可能是另一个Action链;
- 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;
- 根据Result对象信息,生成用户响应信息response,在生成响应过程中,可以使用Struts框架中继承的标签,在此过程中仍会涉及到ActionMapper。
相关推荐
Struts2请求处理流程及源码分析[整理].pdf
b)根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMeshPlugin),主要清理当前线程的ActionContext和Dispatcher;c)请求经过插件...
Struts作为模型-视图-控制器(MVC)架构的一部分,负责处理Web层的请求和响应流程,简化了用户界面与后端逻辑之间的交互。Hibernate则提供了对象关系映射(ORM),将复杂的数据库操作封装成简单的Java对象处理,极大...
流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传...
**项目名称:** 网上订餐系统(Struts + Spring + Hibernate) **项目简介:** 本项目是一个基于Struts、Spring和Hibernate框架的网上订餐系统,旨在为餐厅提供一个高效、便捷的在线订餐解决方案。系统支持多种...
全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...
探索JVM底层奥秘ClassLoader源码分析与案例讲解.wmv │ │ │ ├─3.锁、分布式锁、无锁实战全局性ID-悟空 │ │ 3.锁、分布式锁、无锁实战全局性ID-悟空.mp4 │ │ │ ├─4.SpringMvc深入理解源码分析 │ │ 4....
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...
[2] 缑艳阳在计算机与网络发表说WebWork是比较领先的MVC框架之一,是OpenSymphony组织 的一个开放源码项目,致力于组件化和代码重用。[1] 1.2 Struts框架 2002年,国外C. Cavaness 专家认为Struts是一个典型的MVC...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
系统后台选用了SSH框架来实现主要的业务逻辑,其中Struts2负责Web层的请求响应分发,Spring框架处理业务对象的生命周期及依赖关系,Hibernate用于对象关系映射和数据的持久化操作。前端采用了JSP技术结合JavaScript...
当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。 QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...
集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息...