这个接触过Struts的人都非常熟悉,但也不排除熟视无睹的情况发生:
我们知道,Struts经过这么多年的发展,其MVC架构几乎已经成为了事实上的工业标准,那么C到底是怎么来实现流程的控制流转呢?
在我们的应用中,有一个web.xml文件,其中有如下的配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.[b]ActionServlet[/b]
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml,xxx.xml,yyy.xml...
</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
这样当我们在启动应用服务器时,通过web.xml加载org.apache.struts.action.ActionServle,进行struts核心控制器的初始化工作,初始化过程中读取struts-config.xml,加载不同的 ModuleConfig对象(关于ModuleConfig的初始化,可参考博客 [url]http://ltc603.iteye.com/blog/68704[/url])。
控制器接受到HTTP请求之后,通过ActionConfig中的path找到相应的action,如果没有相应的action,控制器会直接将请求转发到JSP或者静态页面,否则控制器会通过控制分发转发到相应的action类进行处理。
我们知道,Struts经过这么多年的发展,其MVC架构几乎已经成为了事实上的工业标准,那么C到底是怎么来实现流程的控制流转呢?
在我们的应用中,有一个web.xml文件,其中有如下的配置:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.[b]ActionServlet[/b]
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml,xxx.xml,yyy.xml...
</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
这样当我们在启动应用服务器时,通过web.xml加载org.apache.struts.action.ActionServle,进行struts核心控制器的初始化工作,初始化过程中读取struts-config.xml,加载不同的 ModuleConfig对象(关于ModuleConfig的初始化,可参考博客 [url]http://ltc603.iteye.com/blog/68704[/url])。
控制器接受到HTTP请求之后,通过ActionConfig中的path找到相应的action,如果没有相应的action,控制器会直接将请求转发到JSP或者静态页面,否则控制器会通过控制分发转发到相应的action类进行处理。