strutsSpring原理

本文详细阐述了Web容器启动时如何初始化应用、加载servlet、配置信息及处理用户请求的过程,包括从web.xml文件加载servlet、解析配置信息、截获并处理以.do结尾的请求等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.启动web容器(web server)
1.1 用web.xml初始化应用,搜索含有<load-on-startup>0</load-on-startup>项的servlet,
并加载入容器(new object过程);
1.2 初始化servlet(用<init-param> <param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>)加载了strtus的配置信息,
发现<plug-in>加载扩展组建ContextLoaderPlugIn
根据contextConfigLocation属性文件的value值加载Spring上下文beans.xml
并产生ModuleConfig对象;
1.3 此时web server准备好截获 <url-pattern>*.do</url-pattern>的请求
2.访问应用首页
2.1 发出forward请求 page=“list.do”
2.2 web容器截获请求,并判断请求类别,根据请求字符串后缀(.do)
if 是.do 转交ActionServlet核心控制器处理
2.2.1 ActionServlet调用私有方法 process()方法
2.2.2 在process方法中 再调用Requestprocessor类(核心处理器)的process();
2.2.3 在Requestprocessor 的process()方法中 编码判定、语言判定等程序,并且对请求字符串解析(去掉.后的字符)first;
2.2.4 根据请求串(list)在容器中由struts-config.xml产生的ModuleConfig对象中 搜索与path值相同的action项
2.2.5 在此action中先搜索
if name属性存在
2.2.5.1 根据此name的value值去查找同名的form-bean对象
if form-bean对象已创建
a. 调用此formbean的reset()初始化该对象;
b. 用请求的属性值填充同名的formbean 属性值;
c. 再调用此formbean的validate()验证属性的合法性(返回的ActionErrors对象为null)。
else 根据formbean项的type属性创建formbean对象,再调用reset()、填充、validate()验证
如果合法:
d.再根据请求串(list)搜索action对象是否存在
if 存在 直接用反射调用execute(mapping,form,request,response),返回的forward对象
else 根据type属性值创建action对象(此时只能返回DelegatingActionProxy的实例)
通过DelegatingActionProxy的实例将控制权转交给Spring(传入Action.path值)
在beans.xml中搜索name值等于path值的bean对象(根据class的值反射创建)
此时才返回真正的action实例(对象)
后用反射调用execute(mapping,form,request,response)返回的forward对象;
如果不合法:(返回的ActionErrors对象不为null)
a.直接访问此action项的input属性返回物理视图给ActionServlet
2.2.6 ActionServlet接获控制权,并根据返回的forward对象解析view响应给客户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值