zoukankan      html  css  js  c++  java
  • 05-配置web.xml

    配置项目的部署描述符web.xml

    Tomcat启动时,会扫描项目的web.xml文件

    里面一般写有三大部件:

    • Listener
    • Filter
    • Servlet
    1. Listener一般为:ContextLoaderListener,这是Spring框架自带的监听器,作用是加载spring的配置文件

    一般为:

    <!-- 加载配置文件,是下面的ContextLoaderListener所必需的参数 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-persist-*.xml</param-value>
    </context-param>
    <!-- 配置spring核心监听器,默认会以 /WEB-INF/applicationContext.xml作为配置文件 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    1. Filter常用的为CharacterEncodingFilter,作用是字符集过滤,防止中文乱码

      <!-- 配置过滤器 -->
      <filter>
          <filter-name>characterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <!-- 指定字符集 -->
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
          <!-- 强制请求设置字符集 -->
          <init-param>
              <param-name>forceRequestEncoding</param-name>
              <param-value>true</param-value>
          </init-param>
          <!-- 强制响应设置字符集 -->
          <init-param>
              <param-name>forceResponseEncoding</param-name>
              <param-value>true</param-value>
          </init-param>
      </filter>
      <filter-mapping>
          <filter-name>characterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      

      这里配置三个init-param,不是随便配置的。

      当我们点进CharacterEncodingFilter的源码中,可以看到以下内容:

      public class CharacterEncodingFilter extends OncePerRequestFilter {
          private String encoding;
          private boolean forceRequestEncoding;
          private boolean forceResponseEncoding;
          ......
          ......
      

      可以看到这个CharacterEncodingFilter有三个属性,所以我们需要设置init-param

    2. Servlet一般为DispatcherServlet,请求分发器,作用是拦截请求。

          <!-- 配置servlet -->
          <servlet>
              <servlet-name>dispatcherServlet</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <!-- Servlet默认生命周期中,创建对象是在第一次接收到请求时 -->
              <!-- 而DispatcherServlet创建对象后有大量的初始化操作,不适合在第一次请求时来做 -->
              <!-- 设置load-on-startup是为了让DispatcherServlet在web应用启动时创建对象、初始化 -->
              <load-on-startup>1</load-on-startup>
          </servlet>
          <servlet-mapping>
              <servlet-name>dispatcherServlet</servlet-name>
              <!-- DispatcherServlet 映射的 URL 地址 -->
              <!-- 大白话:什么样的访问地址会交给 SpringMVC 来处理 -->
              <!-- 配置方式一:符合 RESTFUL 风格使用“/” -->
              <!-- <url-pattern>/</url-pattern> -->
              <!-- 配置方式二:请求扩展名 -->
              <url-pattern>*.html</url-pattern>
              <url-pattern>*.json</url-pattern>
          </servlet-mapping>
      
    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    异常详细信息: System.InvalidCastException: 对象不能从 DBNull 转换为其他类型——的解决方法
    .net显示今天农历的代码!
    在GridView中设置日期格式
    安装VS 2008 SP1后,智能提示变为英文的补丁发布
    SQL server无法执行查询,因为一些文件丢失或未注册等问题的解决
    SQL Server 2000企业管理器中MMC无法创建管理单元的解决方法
    FILTER:progid:DXImageTransform.Microsoft.Gradient使用
    [jQuery] event.stopPropagation()报错
    得到系统当前的dpi设置值
    VS2008 当前不会命中断点,还没有为该文档加载任何符号
  • 原文地址:https://www.cnblogs.com/ABKing/p/12493584.html
Copyright © 2011-2022 走看看