Struts与webwork已合并为Struts2框架,Struts2框架良好的扩展性与简洁性使其适用于任何规模的企业web程序的开发.本节我们将向大家展示Struts2框架的结构
在Struts2中一个请求的生存周期:
1. 用户发送请求 : 用户为访问资源向服务器发送请求.
2. FilterDispatcher决定适当的action : FilterDispatcher接受请求然后决定调用适当的action
3. 调用拦截器 : 配置拦截器来应用常用的功能如工作流,验证,文件上传等,都是自动应用于请求的.
4. action的执行 : 然后action将被执行来调用诸如存储数据、检索数据之类的数据库相关操作.
5. 呈递输出 : 结果呈递到输出
6. 返回请求 : 请求通过拦截器按照相反的顺序返回,返回的请求可以允许我们执行一些清理或额外的处理
7. 向用户展示结果 : 控制权最终回归到输出结果至用户浏览器的Servlet容器
图:Struts2中请求流程的高度概括
Struts2 结构 :
Struts2框架拥有良好的简洁性与易扩展的前端控制器,基于很多像Java Filters, Java Beans, ResourceBundles, XML等标准技术.
对于模型层来说,Struts2可以使用任何数据访问技术,像JDBC, EJB, Hibernate等,对于视图层来说,Struts2可以与JSP, JTL, JSF, Jakarta Velocity Engine, Templates, PDF, XSLT等整合.
异常处理 :
Struts2允许我们定义异常处理器和拦截器
l 异常处理器
异常处理器允许我们定义基于局部和全局的异常处理程序.Struts2捕获到异常后会将恰当的信息和异常的详情显示在我们指定的页面上.
l 拦截器
拦截器详细说明了一个action的请求流程的生存周期.配置的拦截器对请求实现了一些常用的功能如工作流,验证等.
Struts2 结构
下图描述了Struts2的结构,同时展示了初始请求如何转到像Tomcat这类的serlet容器,然后通过过滤链
图 : Struts2 结构
过滤器链包括 :
l Action ContextCleanUp filter :
Action ContextCleanUp filter是可选的,当与其他的技术如SiteMash插件整合的时候会很有帮助.
l FilterDispatcher :
接着FilterDispatcher被调用,然后依次调用ActionMapper来决定是不是要引用一个action.如果一个action需要被引用, FilterDispatcher将托付ActionProxy来管理
l ActionProxy :
Action代理能从初始化自struts.xml的配置文件管理器那得到帮助,接着ActionProxy创建一个实现了命令模式的ActionInvocation,ActionInvocation在处理的过程中调用拦截器(如果配置了)然后调用Action ActionInvocation寻找恰当的结果,然后结果呈递到JSP或者模板上.
之后拦截器再按照相反的顺序执行了一遍,最终响应通过配置在web.xml中的过滤器返回.如果配置了ActionContextCleanUp filter, FilterDispatcher不会清理线程局部ActionContext.如果ActionContextCleanUp filter没有被配置, FilterDispatcher会清理所有当前的线程局部.
本章我们学习了Struts2框架的结构.
10 楼 sea0108 2012-06-13 09:57
9 楼 hj419460467 2012-05-29 17:12
8 楼 sorradawnstar 2012-04-19 16:57
7 楼 yinzhiyan 2011-09-27 14:22
6 楼 Dxx23 2011-02-22 15:55
5 楼 zml6578206 2010-06-04 14:59
4 楼 longshao_feng 2010-02-01 22:11
开始不懂了,收藏了,慢慢理解
3 楼 351531104 2010-01-20 23:37
2 楼 天空的雨 2009-12-09 21:43
1 楼 丁丁豆 2009-10-09 09:51