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设计与开发》

Struts2 -- 原理简述

学习struts2有一段时间了,现在
  • studying_de
  • studying_de
  • 2014年04月06日 22:29
  • 761

深入浅出了解Struts的处理流程(有图有真相)

Struts框架在java web开发中很常用。最近我也在逐步摸索和学习。今天就来说说Struts的处理流程。       先上一幅时序图:...
  • xiaoxian8023
  • xiaoxian8023
  • 2013年09月14日 08:11
  • 4071

Struts2 框架的简单实现——轻松理解Struts原理

Struts2因该算是目前JavaWeb中MVC框架中最火的一个了,我第一次接触框架是在大学时期,那时候第一次学的还是Struts1框架,当时想的是:既然有1和2那就从低版本的开始学吧!当时自己想当然...
  • p10010
  • p10010
  • 2015年12月03日 16:13
  • 869

Struts2工作原理解析

struts2框架是SSH框架集中的框架之一,是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器层(Controller)来建立模...
  • u010662668
  • u010662668
  • 2017年03月16日 13:49
  • 564

关于struts框架的优缺点

前几天用到了struts框架写了一下简单的小网页,发现这个东西还是蛮不错的,因为实验室大部分写web server都是JSP+Servlet实现的,因此,对他比较熟悉,就不在讲了,今天偶尔看到网上一个...
  • Husc2009
  • Husc2009
  • 2012年07月28日 21:03
  • 2019

Struts框架心得

      今天看了一段struts的工作原理,终于纠正了以前的一些错误的认识,   首先,页面提交后发送请求,由ActionServlet截取请求,然后填充formbean,读取struts-con...
  • ZF0216
  • ZF0216
  • 2007年07月15日 15:21
  • 811

Struts2工作原理以及核心思想

Struts2JAVA基础学完,肯定是要面临三大框架的学习的,作为初学者,了解三大框架的原理,设计目的是首要任务,只有在把握了框架的设计目的以后,才能有针对性的取学习使用框架,这里从strue2框架开...
  • u011958281
  • u011958281
  • 2017年07月07日 14:42
  • 1340

一个完整的Struts框架Web结构的实现

2.1一个完整的Struts框架Web结构 2.1.1 form表单(可以动态的生成): 提取相应的用户信息,并通过配置文件找到相应的路径, 由相应的action进行跳转处理;form表...
  • yongjian1092
  • yongjian1092
  • 2012年03月19日 10:52
  • 5170

Struts2学习笔记——Struts框架的工作原理(源码调试)

为了下面的Interceptor打基础,同时也是为了了解Struts的工作原理,花一段时间来调试一下Struts的源码是十分必要的: 在Struts版本的2.1.3之前的版本,都是用FilterDis...
  • ps_zhanglei
  • ps_zhanglei
  • 2014年12月14日 11:54
  • 392

J2EE基础教程(4):struts框架(视频笔记)

首先,利用myeclipse自带的功能配置好Struts框架 首先我们来看看放在src目录下的struts.xml,里面什么都没有 ...
  • define_us
  • define_us
  • 2016年07月14日 00:14
  • 276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts框架的工作原理
举报原因:
原因补充:

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