Struts框架的工作原理

转载 2015年07月09日 15:43:55
在J2EE企业级系统开发中,Struts框架占据了很重要的地位,熟练使用Struts框架可以大大地缩短开发周期,提高开发效率。本文将通过具体的代码实例和流程图对Struts框架的工作原理进行论述。
关键词:J2EE,Struts,系统开发框架

  在J2EE企业级系统开发中,Struts框架占据了很重要的地位,熟练使用Struts框架可以大大地缩短开发周期,提高开发效率。本文将通过具体的代码实例和流程图对Struts框架的工作原理进行论述。
  关键词
  J2EE Struts 系统开发框架
  引言
  学习Struts框架普遍会遇到的问题是搞不清它的具体工作原理。整个Struts应用是一个分工明确的有机整体,各个组件各司其职,在控制中心的统一指挥下,按部就班地完成各个部门的处理工作。
  1.接收HTTP请求转到Struts控制器
  
  图1 :Struts工作原理流程
  在如图1所示的工作原理流程中描述了客户端浏览器从发出请求到获得响应的整个处理过程:
  从图1中可以看出,服务器首先对接受到的客户端请求进行过滤:属于Struts处理范围的请求被自动提交给Struts控制器处理,否则将按照传统的方式作出响应。具体说来,在Web应用程序中,凡是“*.do”格式的页面请求URI(Uniform Resource Indicator,统一资源指示符)均属于Struts处理范围,将由一个名为ActionServlet的Servlet负责处理,Struts实现这一控制逻辑并没有引入新的机制,来看Web应用下web.xml的一段代码:
  <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  上述代码片段中使用标准格式配置了名为action的控制器Servlet,并在<servlet-mapping>元素中将所有“.do”结尾的页面请求URI映射到该Servlet。类型org.apache.struts.action.ActionServlet是Struts API 中定义的最重要组件类之一,该类继承了javax.servlet.http.HHttpServlet,因此其对象可以被作为 Servlet使用。
  2.FormBean分发请求
  控制器Servlet开始工作,它先使用一个制定的JavaBean来自动接收客户端请求中包含的表单数据,这在Struts配置文件struts-config.xml中可以找到,声明该JavaBean的代码为:
  <form-beans>
  <form-bean name=”loginForm” type="com.struts.from.UserForm" />
  </form-beans>
  为了实现属性的自动填充功能,该JavaBean必须是org.apache.struts.action.
  ActionForm类型(实际上是其子类)的对象。论文格式。指定使用该Bean的代码同样位于文件struts-config.xml中:
  <action-mappings>
  <action input="/login.jsp" name="loginForm"path="/login" scope="request" type="com.struts.action.LoginAction">
   </action>
  <action path=”/regist” forvard=”/regist.jsp”>
  </action-mapping>
  上述代码片段的作用是,使用<action-mapping>元素的子元素<action>来事先约定控制器(ActionServlet对象)分发HTTP请求的规则:
  (1)如果请求的页面URI是login.do,则使用先前说明过的loginForm来自动接收请求表单中的数据,并将该请求分发给一个LoginAction类型的实例来处理。该实例起到类似于java程序中事件监听器的作用,要求其所属类型必须是org.apache.struts.action.Action的子类。
  同样地,控制器Servlet对象有时也被称为“AectionServlet对象”。和使用JavaBean的情形类似,如果找不到该Action对象(第一次用到时),则系统会自动实例化一个。
  (2)如果请求的页面URI是reqist.do,则直接转向到“/regist.jsp”页面做出响应。此时对应的是图2-9中的一条“短路”流程“1->7->9”。论文格式。
  显然,如果需要还可以在<action-mapping>中定义更多的<action>子元素,来实现多分支效果。
  3.执行execute()方法
  Action对象接收到分发来的请求和先前由ActionServlet对象填充过的表单Bean(以及一些其他相关信息)后,会调用其execute()方法进行处理,execute()方法返回一个封装了下一目标页面信息的AoctionForvard对象给控制器ActionServlet。此时,mapping对象调用findForward()方法查找的是配置文件中<forward>元素所包含的映射信息:
  <global-forwards>
   <forwardname="failed" path="/error.jsp"/>
   <forwardname="successed" path="/right.jsp"/>
   </global-forwards>
  最终的效果是,身份验证通过则由ActionServlet将原客户端HTTP请求再次转发至/error.jsp页面,否则转发至right.jsp页面。论文格式。
  4.归纳Struts应用程序的基本原理
  (1)ActionServlet接收客户端HTTP请求,使用ActionForm自动接收请求表单信息,然后将请求分发给相应的Action对象。
  (2)Action对象调用execute()方法处理请求,然后返回ActionForward对象给ActionServlet
  (3)根据AoctionForward对象封装的信息,ActionForward将HTTP请求再次转发给其它页面,最终发送响应回客户端。

参考文献
1. 《Struts Kick Start》 作者: (美)比德尔 (美)特纳 
译者: 孙勇 电子工业出版社
2.《精通Struts:基于MVC的Java Web设计与开发》

Struts1总结——MVC框架的工作原理

作者:李东龙            MVC英文及Model-View-Controller,分别是模型(Model),视图(View)和控制(Controller)。MVC模式的目的是实现web系...

Struts2工作原理和框架扩展点

框架主要涉及技术:Spring + Struts2 + Hibernate + Freemarker 我们先看看Struts2 工作原理图,这样才方便考虑在设计开发框架时有那些扩展点: ...

Struts2工作原理和框架扩展点(转)

上图来源于Struts2官方站点,是Struts 2 的整体结构 (1)一个请求在Struts2框架中的处理大概分为以下几个步骤  1 .客户端初始化一个指向Servlet容器(例如T...

Struts2工作原理和框架扩展点

http://www.cnblogs.com/winstonyan/archive/2011/11/13/struts2_flow_and_extends.html 框架主要涉及技术:Spr...

三大框架struts,hibernate,spring的工作原理

三大框架的工作原理   2009-04-12 12:15:47|  分类: java|字号 订阅 Hibernate工作原理及为什么要用?(转) 2009-02-11 09:35 ...

【框架学习】Struts2(一)工作原理

众所周知Struts2是MVC模式在web开发中经典的框架之一,学习web开发,这也是一个必经过之路吧,实在不行也得瞅瞅,万一哪天用到了。技术优势: Struts2有两方面的技术优势,一是所有的S...

struts框架的工作流程及其环境搭建(版本2.2.3)

一、新建一个java web project,导包

Struts框架工作流程

对于一个用户请求,Struts框架的工作流程如下:1.jsp页面的请求被拦截器FilterDispatcher截获 2.FilterDispatcher把表单内容转给Action,并封装进Action...

Struts框架原理分析之我见

struts是早期的成熟MVC前端控制层框架,具有诸多优点,近两天又系统了研究了一下框架的原理, 希望能够从原理上研究一下struts框架的实现思路。也就是说如果理解了这些原理的相关应用技术,就...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts框架的工作原理
举报原因:
原因补充:

(最多只允许输入30个字)