Struts简单执行流程
对于ActionServlet的初始化前一篇已经详细讲解,想了解请看上一篇文章
1. 用户发送动态请求并且满足ActionServlet的url-pattern匹配,则该请求由交个ActionServlet处理
2. ActionServlet收到请求,根据请求的方式不同执行不同的方法get(doGet()) 或post(doPost()),当然源码里都是调用ActionServlet的同一个方法(porcess())
3. 在process的方法里主要是根据请求得到相应的MoudleConfig对象,找到之后会把该ModuleConfig对象放到request的Attribute属性里
4. 通过调用ActionServlet的getRequestProcessor的方法得到一个RequestProcessor对象,然后调用该对象得process方法
5. 在process方法里完成ActionForm的表单收集,调用Action的execute的方法,并且完成相应的跳转,请求转发给其他Action或者直接返回给用户相应的响应
6. 请求结束
Struts执行流程详细讲解
满足ActionServlet的url-pattern的请求交个ActionServlet后调用它的doGet或doPost方法,然后调用ActionServlet的process方法
ActionServlet->process执行流程
–>调用ModuleUtils的getInstance()方法得到一个ModuleUtils对象,该对象那个默认是通过new创建的
–>得到ModuleUtils的对象后调用该对象的selectModule()方法
–>selectModule方法会先去调用getModuleName方法,首先会判断request里是否有javax.servlet.include.servlet_patha
属性(因为一般新的请求都不存在该属性),该属性为空则会得到request.getServletPath(),调用getModuleName的一个重载方法(因为ActionServlet的init方法里调用了initModulePrefixes方法,该方法的详细解释看上一篇文章),所以Application里存在org.apache.struts.globals.MODULE_PREFIXES
属性