了解一个框架,必须得深刻理解其内部执行流程,也就是所谓的工作原理,对于struts来说,了解它的工作流程尤为重要
首先有一个图可以大致展现这些流程的关联
由于Struts是标准的MVC框架,所以要介绍下框架的构成
1.视图:采用JSP页面;(就是JSP文件)
2.控制器:采用Java Servlet,负责视图与模型之间的交互;(就是struts-config.xml文件)
控制器的每个入口点都由名为struts-config.xml的配置文件设置,该文件把来自视图的请求映射为特定的Java类以进行处理,控制器还可以指定下一个视图的位置;
3.模型:采用JavaBean, (就是java文件)
例如:FormBean用来存储来自视图请求的表单信息;
ActionBean用来处理表单信息,实现业务处理逻辑功能;
具体执行流程
1. 读取配置(初始化ModuleConfig对象)
采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,在ActionServlet初始化ModuleConfig的时候,调用initModuleConfigFactory()初始化配置工厂,然后由配置工厂通过initModuleConfig("",
config)获得ModuleConfig对象。
通过ModuleConfig对象调用下列方法去初始化相关模块。
initModuleMessageResources(moduleConfig);
initModuleDataSources(moduleConfig);
initModulePlugIns(moduleConfig);
这些方法的功能就是:容器在加载Struts应用程序时,会先加载web.xml中与Struts相关的一些配置参数,找到struts-config.xml文件,然后通过循环来读取此文件和解析里面的内容,并初始化相关对象。
2. 用户请求
用户提交表单或调用url向Web应用程序服务器提交一个请求,请求的数据用HTTP协议上传给Web服务器。
3. 填充FormBean
填充FormBean的过程包括实例化、复位、填充数据、校验、保存等操作。根据*.do请求从ActionConfig中找出对应该请求的Action子类,如有对应的Action且这个Action有一个相应的ActionForm,则ActionForm被实例化并用HTTP请求的数据填充其属性,并保存在ServletContext中,这样它们就可以被其他Action对象或JSP调用。如果没有对应的Action,控制器则直接转发给JSP或静态页面。
4. 转发请求
控制器根据配置信息ActionConfig将请求派发到具体的Action,与请求相应的FormBean将一并传给这个Action对象。
5. 处理业务
Action一般只包含一个execute()方法,它负责执行相应的业务逻辑。执行完毕后返回一个ActionForward对象,控制器通过该ActionForward对象进行转发工作。
6. 返回响应
Action根据业务处理的不同结果返回一个响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或另一个Action。
7. 查找响应
总控制器根据业务功能Action返回的目标响应对象找到对应的资源对象,通常是一个具体的JSP页面。
8. 响应用户
目标响应对象将结果展现给用户目标响应对象,即具体的JSP页面,这样客户就得到响应的结果。
这里只是从使用Struts的角度对它的工作原理作了分析,在后面的章节中还会深入分析ActionMapping对象、ActionForm对象及Action对象的初始化过程。下面通过一个示例来加深对Struts工作原理的理解。
- 大小: 24.8 KB
分享到:
相关推荐
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
2017年7月7日,Apache Struts发布最新的安全公告,Apache Struts2-strus1-plugin插件存在远程代码执行的高危漏洞,漏洞编号为CVE-2017-9791(S2-048),主要受影响的Struts版本为:2.3.x。 攻击者可以构造恶意的字段值...
struts-taglib-1.3.8.jar struts-taglib-1.3.8.jar
`struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...
struts2-ssl-plugin-1.2.1.jar
struts2-config-browser-plugin-2.3.24.jar, struts2-core-2.3.24.jar, struts2-jasperreports-plugin-2.3.24.jar, struts2-jfreechart-plugin-2.3.24.jar, struts2-pell-multipart-plugin-2.3.24.jar, struts2-...
struts2-json-plugin,Struts JSON插件
在 Struts2 中,标签库使用 OGNL 表达式来获取对象数据,例如 `<s:property value="#parameters.msg" />`,Struts2 会解析 value 中的值,并当作 OGNL 表达式进行执行,获取到 parameters 对象的 msg 属性。...
【Struts2】〖所有依赖jar包〗struts-2.3.37-lib 我寻见一片海 碧蓝且耀着光 大片船只航行其上 都向着远方 Shared by Foriver_江河 © 1997-8023 江河 All Rights Reserved.
首先,我们来看`struts-json-plugin-2.1.8.jar`,这是Struts2的JSON插件,它允许Struts2的动作类直接返回JSON格式的数据,方便前端进行Ajax请求处理。该插件在2.1.8版本中修复了若干bug,并提供了对JSON输出的支持。...
struts2-bean-validation-plugin-2.5.2.jar, struts2-cdi-plugin-2.5.2.jar, struts2-config-browser-plugin-2.5.2.jar, struts2-convention-plugin-2.5.2.jar, struts2-core-2.5.2.jar, struts2-dwr-plugin-2.5.2....
struts2-struts1-plugin-2.1.6.jar
struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-other-lib 等jar包struts-spring-...
包含Struts2框架的核心类库,以及Struts2的第三方插件类库 struts2-core-2.0.14 xwork-2.0.7 ognl-2.6.11 commons-logging-1.0.4 freemarker-2.3.8 等等。
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
struts2-jquery-plugin-3.1.0.jar
总之,Struts2-Spring-plugin-2.3.4.jar 文件是实现Struts 2 和Spring 框架高效协同工作的关键组件,它简化了两者之间的集成过程,提高了代码质量和开发效率。在开发基于Struts 2 和Spring 的Java Web 应用时,确保...