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>
      
    金麟岂是池中物,一遇风云便化龙!
  • 相关阅读:
    adb shell am force-stop <package>
    推荐一个代码生成工具:freemarker
    子控件跟着父控件变色
    sqlite支持的数据库类型
    android 资源文件
    一个手机基础信息的获取代码
    二维码的开源项目
    在点击HOME键时, 在点击icon回到原来的应用。
    Wireshark "The NPF driver isn’t running…"
    .atomic vs volatile
  • 原文地址:https://www.cnblogs.com/ABKing/p/12493584.html
Copyright © 2011-2022 走看看