天乙论坛v8 web.xml 分析

来源:互联网 发布:电影矩阵 编辑:程序博客网 时间:2024/04/30 05:13
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 
  3. http://www.ibm.com/developerworks/cn/java/j-tomcat/
  4. 应该指定它们为 web.xml 文件内 <web-app> 标记的子标记。
  5.  -->
  6. <web-app version="2.4"
  7.          xmlns="http://java.sun.com/xml/ns/j2ee"
  8.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  9.          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  10.     <display-name>bbscs8</display-name>
  11.     <filter>
  12.         <filter-name>UrlRewriteFilter</filter-name>
  13.         <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  14.     </filter>
  15.     <!-- 
  16.     <filter-mapping> 标记代表了一个过滤器的映射,
  17.     指定了过滤器会对其产生作用的 URL 的子集。
  18.     它必须有一个 <filter-name> 子元素与能找到
  19.     您希望映射的过滤器的过滤器定义相对应。
  20.      -->
  21.     <filter-mapping>
  22.         <filter-name>UrlRewriteFilter</filter-name>
  23.         <url-pattern>/*</url-pattern>
  24.     </filter-mapping>
  25.     <!--
  26.    <filter>
  27.      <filter-name>SidFilter</filter-name>
  28.      <filter-class>com.laoer.bbscs.web.servlet.SidFilter</filter-class>
  29.    </filter>
  30.    <filter-mapping>
  31.      <filter-name>SidFilter</filter-name>
  32.      <url-pattern>/*</url-pattern>
  33.    </filter-mapping>
  34.     -->
  35.     <filter>
  36.         <filter-name>CharacterEncodingFilter</filter-name>
  37.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  38.         <!-- 
  39.         init-param> 子元素为过滤器实例提供初始化参数
  40.          -->
  41.         <init-param>
  42.             <param-name>encoding</param-name>
  43.             <param-value>UTF-8</param-value>
  44.         </init-param>
  45.         <init-param>
  46.             <param-name>forceEncoding</param-name>
  47.             <param-value>true</param-value>
  48.         </init-param>
  49.     </filter>
  50.     <filter-mapping>
  51.         <filter-name>CharacterEncodingFilter</filter-name>
  52.         <url-pattern>/*</url-pattern>
  53.     </filter-mapping>
  54.     <!-- 
  55.     如果应用中使用了OpenSessionInViewFilter或者OpenSessionInViewInterceptor,
  56.     所有打开的session会被保存在一个线程变量里。在线程退出前通过
  57. OpenSessionInViewFilter或者OpenSessionInViewInterceptor断开这些session。 
  58. 为什么这么做?这主要是为了实现Hibernate的延迟加载功能。基于一个请求
  59. 一个hibernate session的原则。
  60.      -->
  61.     <filter>
  62.         <filter-name>OpenSessionInViewFilter</filter-name>
  63.         <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  64.     </filter>
  65.     <filter-mapping>
  66.         <filter-name>OpenSessionInViewFilter</filter-name>
  67.         <url-pattern>/*</url-pattern>
  68.     </filter-mapping>
  69.     <!-- 
  70.     在做上传文件的时候,
  71.     要在web.xml中增加ActionContextCleanUp这个filter,
  72.     如果不增加,会发生第一次上传取不到文件的情况
  73.      -->
  74.     <filter>
  75.         <filter-name>struts-cleanup</filter-name>
  76.         <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
  77.     </filter>
  78.     <filter-mapping>
  79.         <filter-name>struts-cleanup</filter-name>
  80.         <url-pattern>/*</url-pattern>
  81.     </filter-mapping>
  82.     <!-- 
  83.     核心控制器:FilterDispatcher。
  84. FilterDispatcher类存在于org.apache.struts2.dispatcher包下,
  85. 它继承了javax.servlet.Filter接口。在应用的web.xml文件中需要配置该控制器,
  86. 用来接收用户所有请求,FilterDispatcher会判断请求是否为*.action模式,
  87. 如果匹配,则FilterDispatcher将请求转发给Struts 2.0框架进行处理。
  88. 在web.xml文件中对FilterDispatcher的配置
  89.     
  90.      -->
  91.     <filter>
  92.         <filter-name>Struts2</filter-name>
  93.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  94.     </filter>
  95.     <filter-mapping>
  96.         <filter-name>Struts2</filter-name>
  97.         <url-pattern>/*</url-pattern>
  98.         <dispatcher>REQUEST</dispatcher>
  99.         <dispatcher>FORWARD</dispatcher>
  100.     </filter-mapping>
  101.     <context-param>
  102.         <param-name>urlrewrite</param-name>
  103.         <param-value>false</param-value>
  104.     </context-param>
  105.     <context-param>
  106.         <param-name>cluster</param-name>
  107.         <param-value>false</param-value>
  108.     </context-param>
  109.     <context-param>
  110.         <param-name>servletmapping</param-name>
  111.         <param-value>*.bbscs</param-value>
  112.     </context-param>
  113.     <context-param>
  114.         <param-name>poststoragemode</param-name>
  115.         <param-value>1</param-value>
  116.     </context-param>
  117.     <listener>
  118.         <listener-class>com.laoer.bbscs.web.servlet.SysListener</listener-class>
  119.     </listener>
  120.     <context-param>
  121.     <!-- contextConfigLocation 参数定义了要装入的 Spring 配置文件。 -->
  122.         <param-name>contextConfigLocation</param-name>
  123.         <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml</param-value>
  124.     </context-param>
  125.     <!-- 
  126.     有两种方法,一个是用ContextLoaderListener这个Listerner,
  127.     另一个是ContextLoaderServlet这个Servlet,
  128.     这两个方法都是在web应用启动的时候来初始化WebApplicationContext,
  129.     我个人认为Listerner要比Servlet更好一些,
  130.     因为Listerner监听应用的启动和结束,而Servlet得启动要稍微延迟一些,
  131.     如果在这时要做一些业务的操作,启动的前后顺序是有影响的。
  132.     
  133.     ContextLoader是一个工具类,用来初始化WebApplicationContext,
  134.     其主要方法就是initWebApplicationContext,
  135.     我们继续追踪initWebApplicationContext这个方法
  136.     (具体代码我不贴出,大家可以看Spring中的源码),
  137.     我们发现,原来ContextLoader是把WebApplicationContext
  138.     (XmlWebApplicationContext是默认实现类)放在了ServletContext中,
  139.     ServletContext也是一个“容器”,
  140.     也是一个类似Map的结构,
  141.     而WebApplicationContext在ServletContext中的
  142.     KEY就是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
  143.     我们如果要使用WebApplicationContext则需要从ServletContext取出,
  144.     Spring提供了一个WebApplicationContextUtils类,
  145.     可以方便的取出WebApplicationContext,只要把ServletContext传入就可以了。 
  146.      -->
  147.     <listener>
  148.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  149.     </listener>
  150.     <servlet>
  151.         <servlet-name>authimg</servlet-name>
  152.         <servlet-class>com.laoer.bbscs.web.servlet.AuthImg</servlet-class>
  153.     </servlet>
  154.     <servlet-mapping>
  155.         <servlet-name>authimg</servlet-name>
  156.         <url-pattern>/authimg</url-pattern>
  157.     </servlet-mapping>
  158.     <servlet>
  159.         <servlet-name>rss</servlet-name>
  160.         <servlet-class>com.laoer.bbscs.web.servlet.Rss</servlet-class>
  161.     </servlet>
  162.     <servlet-mapping>
  163.         <servlet-name>rss</servlet-name>
  164.         <url-pattern>/rss</url-pattern>
  165.     </servlet-mapping>
  166.     <welcome-file-list>
  167.         <welcome-file>index.jsp</welcome-file>
  168.     </welcome-file-list>
  169.     <!-- 
  170.     在 Tomcat 5.0.x 中,Tomcat 支持了 JSP 2.0 的规格,
  171.     同时也支持了部分 J2EE 1.4 的规格,
  172.     在 J2EE 1.4 的规格中,
  173.     有关 JSP 的部份,有一个 <jsp-config> 的 XML Tag,
  174.     这个 XML 区块用来定义与 JSP 相关的特殊属性,
  175.     包含采用的 taglib 与 以下说明的 <jsp-property-group> ,
  176.     而解决 include 档中文问题的方法就定义在 <jsp-roperty-group> 中
  177.      -->
  178.     <jsp-config>
  179.         <taglib>
  180.             <taglib-uri>/WEB-INF/struts-tags.tld</taglib-uri>
  181.             <taglib-location>/WEB-INF/struts-tags.tld</taglib-location>
  182.         </taglib>
  183.     </jsp-config>
  184.     <error-page>
  185.         <error-code>401</error-code>
  186.         <location>/401.htm</location>
  187.     </error-page>
  188.     <error-page>
  189.         <error-code>403</error-code>
  190.         <location>/403.htm</location>
  191.     </error-page>
  192.     <error-page>
  193.         <error-code>404</error-code>
  194.         <location>/404.htm</location>
  195.     </error-page>
  196.     <error-page>
  197.         <error-code>500</error-code>
  198.         <location>/500.htm</location>
  199.     </error-page>
  200.     <error-page>
  201.         <exception-type>java.lang.NullPointerException</exception-type>
  202.         <location>/npe.htm</location>
  203.     </error-page>
  204. </web-app>
原创粉丝点击