深入浅出学习Struts1框架(六):ActionServlet的实例化

来源:互联网 发布:培训课程网络促销方案 编辑:程序博客网 时间:2024/06/17 09:14

之前写了五篇关于struts1框架学习的博客,主要是从mvc的一个实例开始,慢慢重构出一个struts1框架雏形,通过这个雏形来引出我们要学习的struts1框架并且编写了一个struts1实例。五篇博客如下:


1、《深入浅出学习Struts1框架(一):一个简单mvc模式代码示例开始》

2、《深入浅出学习Struts1框架(二):重构MVC模式代码中跳转路径和业务逻辑》

3、 《深入浅出学习Struts1框架(三):彻底去掉TestServlet中的字符串和if-else语句块》

4、《深入浅出学习struts1框架(四):从MVC模式代码认识struts1框架》

5、《深入浅出学习struts1框架(五)--正式进入struts1框架学习,从一个实例开始》

 

今天我们来分析一下先前的Struts1框架的实例。在分析之前希望读者能够再次看一下struts1框架(五)的博客,以便对这篇博客的理解。

 

在struts框架(四)中我们介绍了struts1框架结构:


 

 

 

从struts1框架结构来看,客户端的请求会发送到Actionservlet上,这个AcitonServlet就像是我们在struts1框架(一)中介绍的testAction一样,就是处理服务器传来的请求,所以我们要在web.xml里面配置ActionServlet,我们也看到struts框架(五)中web.xml的配置文件中的对ActionServlet的配置信息:


[html] view plaincopyprint?
  1. <servlet>  
  2.    <servlet-name>action</servlet-name>  
  3.    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
  4.    <init-param>  
  5.      <param-name>config</param-name>  
  6.      <param-value>/WEB-INF/struts-config.xml</param-value>  
  7.    </init-param>  
  8.    <init-param>  
  9.      <param-name>debug</param-name>  
  10.      <param-value>2</param-value>  
  11.    </init-param>  
  12.    <init-param>  
  13.      <param-name>detail</param-name>  
  14.      <param-value>2</param-value>  
  15.    </init-param>  
  16.    <load-on-startup>2</load-on-startup>  
  17.   </servlet>  
  18. <!-- Standard Action ServletMapping -->  
  19.  <servlet-mapping>  
  20.    <servlet-name>action</servlet-name>  
  21.    <url-pattern>*.do</url-pattern>  
  22.  </servlet-mapping>   
  23. </web-app>  


 

知道配置ActionServlet之后,我们看一下除了配置ActionServlet还配置了一些初始化参数信息,首先我们看第一个config参数,这里配置的是/WEB-INF/struts-config.xml,因为要下面传递一个这样一个配置信息,这个xml文件名是struts1标准的名字,所以这里这个初始化信息完全可以删除,如果不用这个标准名称这里就必须要在这里配置。现在我们配置的是标准名字,所以我们可以删除,这是为什么呢?这里要看ActionServlet源代码才可以。




从图片上我们能看到ActionServlet中已经写好了默认的config信息了,就是标准名字。所以这里删除也是可以的。

在看下面的debug和detail参数,这两个参数信息是有关日志信息级别的设置,主要关于解析配置文件/WEB-INF/struts-config.xml级别的初始化参数。这里这两个参数可以完全去掉也不影响。


最后还有一个load-on-startup配置,这个是初始化servlet级别的初始化信息,这个参数如果大于等于0就是说明在服务器一启动就把servlet初始化,也就是调用ActionServlet的init方法,这个也可以到ActionServlet的源代码中去查找。

 

当ActionServlet初始化的时候就会读取/WEB-INF/struts-config.xml信息到内存中,读到内存是以什么样的形式展现的呢?我们现在可以看一下以前博客的那个mvc实例,那里面读取配置文件中的信息是以Actionmapping的形式展现的(如果这里不理解,建议看一下我原先博客的那个mvc小实例)【这里是如何独到内存的,请看下篇博客分析】。

 

另外servlet-mapping的配置就不讲解了,这个都知道就是匹配url路径的,当遇到url-pattern的路径时候就会实例化Actionservlet。

 

通过这篇博客我们知道了当我们请求的时候ActionServlet是怎样实例化的,也知道为什么我们要配置web.xml信息了。那么我们为什么要配置/WEB-INF/struts-config.xml文件,ActionServlet是如何传递请求的,如何和ActionForm、ActionMapping、Action等交互的最终完成用户请求的呢?下一篇就会慢慢道来,敬请期待!

0 0
原创粉丝点击