struts1 工作流程

1 容器启动后,会加载ActionServlet,然后从struts-config.xml配置文件中读取信息,把信息存放到配置对象中

(例如Action的信息放在ActionMapping对象中,每一个action信息都对应一个<action>标签,通过该标签进行信息的配置,在内存中,每一个<action>都对应一个org.apache.struts.action.ActionMapping的实例)。

(ActionSevlet是struts1的核心组件,继承了HttpServlet类,主要负责接收http请求,然后根据struts-config.xml文件中的信息,把请求转发给相应的action对象,如果该action对象不存在,则会先创建该action对象,反之直接使用该对象。从这点说,struts1存在线程安全问题,当多条线程使用该action对象进行操作,如果存在实例变量或静态全局变量,会发现变量值并不是预期结果)。


2 当ActionServlet接收到一个http请求后,会在struts-config.xml检索和请求对应的ActionMapping实例,如果没有,返回请求无效。



3 如果ActionForm实例不存在,创建一个,将客户提交的表单数据存放在ActionForm对象中。


4 根据配置信息决定是否需要表单的验证,如果需要,执行ActionForm中的validata()方法。


5 如果validate()返回null 或 不包含ActionMessage的ActionError对象,表示表单验证成功(如果包含ActionMessage,则表单验证失败,此时ActionServlet将请求转发给包含用户提交表单的jsp,不会创建Action对象,调用其excute()方法)。


6 ActionServlet根据ActionMaping实例中的映射信息,将请求转发给相应的Action。如果该Action实例不存在,先创建,然后调用Action()的excute()方法。


7 Action的excute()返回一个ActionForwrd对象,Actionservlet把客户的请求转发给ActionForward对象指向的jsp组件。


8 ActionForward指向的jsp组件生成动态网页,返回给客户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值