struts执行流程

下面为客户点击或提交form到服务器端处理,得到响应的过程

如提交×××Action.do

1)查找servlet

Servlet容器在web..xml文件中寻找url-pattern属性为*.do<servlet-mapping>元素;servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet

2)找到相应action

servlet容器把请求转发给ActionServlet,这个servlet根据请求路径,在struts的配置文件里按照这个路径找到相应的XXXaction,(其ActionServlet检索的是ActionMapping对象,在容器启动的时候,初始化Actionservlet会加载strutsconfig.Xml文件,把配置信息放到相应的配置类实例里,如Action的配置信息就放在ActionMapping对象中,里面是个map,每个action元素可以有多个forward子元素,每个forward子元素配置信息放在一个ActionForward对象里)。ActionServlet实例接收到Http请求后,在doGet()或者doPost()方法中都会调用process()方法来处理请求。process()方法会创建一个RequestProcessor类实例包含一个HashMap,作为存放所有Action实例的缓存,每个Action实例在缓存中存放的属性key Action类名。在RequestProcessor类的processActionCreate()方法中,首先检查在HashMap中是否存在 Action实例。因此在客户端发送“url.do”时由前端控制器ActionServlet分派给RequestProcessor来处理客户请求最后分发给相应的应用程序控制器Action来处理业务。

3)给form赋值

ActionServlet根据action元素的name属性,创建一个form对象,把客户从页面提交的表单数据传给form对象,一般是request范围内有效。

4表单验证

如果validate属性为trueActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。如果没有ActionMessage对象表示验证成功,并放在request范围内。

struts的表单验证也比较好用,需求加两个文件validation.xmlvalidator-rules.xml。关于这个东东,我在单独写她怎么用

5action进行真正的业务处理

ActionServlet查找XXXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法。

6)返回forward,转到客户端

最后调用mapping.findForward(forward)方法,从action元素中查找nameXXXActinforward子元素,然后返回ActionForward对象。其实就是查找ActionMapping本身的HashMap Excute()方法ActionForward对象返回给ActionServletActionServlet根据这个forward把响应转到具体页面。

到此对一个请求的处理完毕。里面贯穿了struts的运行过程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值