• Struts在Web.xml中的配置及Struts1和Struts2的区别


    (1)配置Struts的ActionServlet 
        <servlet>元素来声明ActionServlet
        <servlet-name>元素:用来定义Servlet的名称
        <servlet-class>元素:用来指定Servlet的完整类名     

    1.  
      <servlet>
    2.  
      <servlet-name>action</servlet-name>
    3.  
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    4.  
      </servlet>

      还要配置<servlet-mapping>元素,它用来指定ActionServlet可以处理哪些URL  

    1.  
      <servlet-mapping>
    2.  
      <servlet-name>action</servlet-name>
    3.  
      <url-pattern>*.do</url-pattern>
    4.  
      </servlet-mapping> <span style="color:#ff0000;">注:<span style="font-family: Arial; font-size: 14px; line-height: 26px;">在显示层所有以*.do为扩展名提交的URL,都会交由这个Servlet来处理。</span></span>

    (2)声明ActionServlet的初始化参数
         初始化参数用来对Servlet的运行时环境进行初始配置。

          <servlet>的<init-param>子元素用于配置Servlet初始化参数: 
                 config :以相对路径的方式指明Struts应用程序的配置文件位置,如不设置,则默认值为/WEB-INF/struts-config.xml
                 debug : 设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。
                 detail : 设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的                          解析日志。默认为0,记录相对最少的日志信息。
                 <load-on-startup>?</load-on-startup>中?号的值是此ActionServlet在服务器开启时加载的次序,数值越低,越先加载。

    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>3</param-value>
    11.  
      </init-param>
    12.  
      <init-param>
    13.  
      <param-name>detail</param-name>
    14.  
      <param-value>3</param-value>
    15.  
      </init-param>
    16.  
      <load-on-startup>0</load-on-startup>
    17.  
      </servlet>

    扩展:(1)当服务器启动后,加载ActionServlet,而ActionServlet会调用相关的方法去,会根据它下面的参数的初始值,对这个ActionServlet中的参数时行初始化

    1.  
      <servlet>
    2.  
      <servlet-name>action</servlet-name>
    3.  
      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    </servlet>

    不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Struts框架只允许在应用中配置一个ActionServlet。

    ************************************************************初始化参数对Servlet的运行环境进行初始化配置************************************************************************* 

    <init-param>

           <param-name>config</param-name><!—config指明Struts应用程序的配置文件相对位置--> 

         <param-value>/WEB-INF/struts-config.xml</param-value> 

    </init-param> 

    这里是以相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml。 **************************************************************设置Servlet的debug级别**********************************************************************

    <init-param> 

             <param-name>debug</param-name> 

             <param-value>3</param-value> 

    </init-param> 

    设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。 *

    ************************************************************设置Digester的debug级别***************************************************** 

    <init-param>

             <param-name>detail</param-name> 

             <param-value>3</param-value>

     </init-param> 

    设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。默认为0,

    
    

    **************************************************************这里也是配置ActionServlet**************************************************************************************** 

    <servlet-mapping><!—标识着与URL进行匹配时,Web服务器就会将控制权移交给ActionServlet--> 

            <servlet-name>action</servlet-name><!—与<servlet-name>必须一样-->

           <url-pattern>*.do</url-pattern> 

    </servlet-mapping> 

    就是将所有的*.do请求提交给action,从这里又找到上面那个配置可以读到ActionServlet的位置。

    *************************************************************配置Struts标签库******************************************************************************************************

    <taglib> 

       <tag-uri>/WEB-INF/struts-html.tld<tag-uri> 

       <taglib-location>/WEB-INF/struts-html.tld</taglib-location>  

    </taglib> 

    其中<tag-uri>用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。 <taglib-location>指定标签描述文件在文件资源系统中的物理位置。

    
    
    
    
    
    

    Struts2 在web.xml中的配置: 

           任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。        通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载Struts2框架。因为Struts2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispatcher,只需要在web.xml文件中配置FilterDispatcher即可。 标准配置文件如下:

    1.  
      <?xml version="1.0" encoding="UTF-8"?>
    2.  
      <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    3.  
       
    4.  
      <display-name>Struts Blank</display-name>
    5.  
       
    6.  
      <filter>
    7.  
      <filter-name>struts2</filter-name> <span style="font-family: Arial, Helvetica, sans-serif;"><!-- 配置Struts2核心Filter的名字 --></span>
    8.  
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class><span style="font-family: Arial, Helvetica, sans-serif;"><!-- 配置Struts2核心Filter的实现类 --> </span>
    9.  
      <init-param>
    10.  
      <param-name>actionPackages</param-name> <span style="font-family: Arial, Helvetica, sans-serif;"><!-- 配置Struts2框架默认加载的Action包结构,可以没有。 --> </span>
    11.  
      <param-value>org.apache.struts2.showcase.person</param-value>
    12.  
      </init-param>
    13.  
      <init-param> <span style="font-family: Arial, Helvetica, sans-serif;"><!-- 配置Struts2框架的配置提供者类 --> </span>
    14.  
      <param-name>configProviders</param-name>
    15.  
      <param-value>lee.MyConfigurationProvider</param-value>
    16.  
      </init-param>
    17.  
      </filter>
    18.  
      <!-- 配置Filter拦截的URL -->
    19.  
      <filter-mapping>
    20.  
      <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->
    21.  
      <filter-name>struts2</filter-name>
    22.  
      <url-pattern>/*</url-pattern>
    23.  
      </filter-mapping>
    24.  
       
    25.  
      <welcome-file-list>
    26.  
      <welcome-file>index.html</welcome-file>
    27.  
      </welcome-file-list>
    28.  
      </web-app>



    比较Struts1和Struts2在Web.xml中的配置:

            Struts1中的核心控制器是ActionServlet,是一个Servlet;而到了Struts2核心控制器是FilterDispatcher,是一个Filter;

            Struts1是封装了Servlet的框架,而Struts2是封装了过滤器Filter的框架,原因是struts2基于webwork,机制完成不一样!是两个不同的                    框架,之间没多大关系。

    转自https://blog.csdn.net/qmw19910301/article/details/52921571

  • 相关阅读:
    读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第三部分)
    Spring Boot进阶系列一
    职场进阶之七种武器
    大龄IT程序员的救赎之道
    Web Service
    生产者消费者问题
    SpringBoot集成Apache Shiro
    简单模拟医院叫号系统
    IT小团队管理者的突围之道
    内部推荐
  • 原文地址:https://www.cnblogs.com/shizhijie/p/9603230.html
Copyright © 2020-2023  润新知