struts ActionServlet源码分析
一、ActionServlet有两种中用途:
1、用于系统初始化时,初始化URL的后缀,以及对应的类
ActionServlet.initServlet()请求的URL后缀 - servletMapping :*.do
ActionServlet.initServlet()请求的URL后缀对应bean- servletName :action
ActionServlet.initModulePrefixes():上下文:org.apache.catalina.core.ApplicationContextFacade@1c958af
2、用于拦截请求的URL,接着由RequestProcessor进行处理
ActionServlet.process():拦截请求URL
二、RequestProcessor用于处理URL与action的关系,然后将请求跳到对应的action中
1、RequestProcessor.process():请求URL:/register
2、RequestProcessor.process():获取action的配置:ActionConfig[path=/register,input=/register.jsp,name=RegisterForm,scope=request,type=app.RegisterAction,validate=true,cancellable=false
3、RequestProcessor.process():获取Form实例:app.RegisterForm@1c0bee6
4、RequestProcessor.process():获取action实例:app.RegisterAction@1f7896f
5、RequestProcessor.process():获取跳转页面:ForwardConfig[name=failure,path=/failure.jsp,redirect=false,contextRelative=false,module=null]
三、action
action.execute()处理
特殊:
<!-- tomcat启动时、是否实例化该类、0、1、2为类实例化的顺序 -->
<load-on-startup>0</load-on-startup>
如果说ActionServlet是Struts框架的入口,RequestProcessor是消化过滤系统,那么Action类就是整个框架的心脏,它是客户请求和业务操作的连接桥梁,也可以看做是业务操作的代理。具体的业务逻辑实现,并不是在Action中实现的,Action只是调用了业务逻辑封装好的方法。