struts1的工作流程

1.开启服务端(即本地服务器tomcat),由通过web.xml的配置,启动org.apache.struts.action.ActionServlet,并初始化一些数据(包括struts-configue.xml),将相关请求都交由ActionServlet(中央控制器,继承HttpServlet)来处理

2.浏览器发送请求,如http://localhost:8080/login

3.服务端用request接收并封装有关客户端的数据,将此对象注入到ActionServlet中,实现struts的控制,在ActionServlet中执行如下方法:

   1).doGet或doPost方法:二者均调用本类的process方法,在process方法中生成RequestProcessor对象,并调用RequestProcessor对象的process方法(所以说,真正的控制器是RequestProcessor,ActionServlet是初始化数据,并生成RequestProcessor对象,由RequestProcessor执行相应的处理方法),在process方法中执行各种方法;

   2).先是processPath()方法:用于截取浏览器端的请求地址。首先是找到prefix,即http://localhost:8080,再通过subString()获得截取地址,即/login.

   3).再是processMapping()方法:通过截取地址(即/login)找到对应的ActionMapping,ActionMapping封装了有关对应地址的相关信息(包括AcionForm,ActionForward等等)

   4).然后是processActionForm()方法:通过ActionMapping里面的name属性,在scope中找到同名的配置的form-bean,如果没有则直接返回,不处理;否则就根据form-bean中的type属性的配置生成相应的ActionForm对象,并放到配置的scope中.

   5).再然后是processPopulate()方法:用于自动收集浏览器端发送过来的数据.

              工作流程:

              1).先是通过request对象的getParameterNames()获得参数名,再通过getParameterValues()方法循环得到参数值,再构建一个hashMap(名为properties),将名值对put进去;

              2).再将生成的ActionForm对象和hashMap对象传入到BeanUtils.populate()中,取出参数名,并找到相应的set方法,将值set到其属性中,在set之前还会进行类型的转换。

   6).接着是processForward()方法:用于直接跳转,而不生成action对象.若配置了forword属性,则直接跳转;否则执行 processActionCreate(),生成相应的Action

   7).执行 processActionCreate()方法,根据action标签的type属性, 生成相应的Action对象

   8).紧接着执行processActionPerform()方法,即Action对象的execute()方法,根据Forword标签生成ActionForword对象,并返回

   9). processForwardConfig()方法,用于解析返回的ActionForword对象,实行跳转

大致流程好像是这样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值