Maven依赖

  1. <!-- Spring MVC -->
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-webmvc</artifactId>
  5. <version>5.3.1</version>
  6. </dependency>
  7. <!-- 日志模块 -->
  8. <dependency>
  9. <groupId>ch.qos.logback</groupId>
  10. <artifactId>logback-classic</artifactId>
  11. <version>1.2.3</version>
  12. </dependency>
  13. <!-- Servlet API -->
  14. <dependency>
  15. <groupId>javax.servlet</groupId>
  16. <artifactId>javax.servlet-api</artifactId>
  17. <version>3.1.0</version>
  18. <scope>provided</scope>
  19. </dependency>
  20. <!-- Spring5整合Thymeleaf -->
  21. <dependency>
  22. <groupId>org.thymeleaf</groupId>
  23. <artifactId>thymeleaf-spring5</artifactId>
  24. <version>3.0.12.RELEASE</version>
  25. </dependency>
  26. <build>
  27. <plugins>
  28. <!-- 增加maven编译插件,设置编译版本,防止刷新后变为jdk5-->
  29. <plugin>
  30. <groupId>org.apache.maven.plugins</groupId>
  31. <artifactId>maven-compiler-plugin</artifactId>
  32. <version>3.6.0</version>
  33. <configuration>
  34. <source>1.8</source>
  35. <target>1.8</target>
  36. <encoding>UTF-8</encoding>
  37. </configuration>
  38. </plugin>
  39. </plugins>
  40. </build>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1" metadata-complete="true">
    <display-name>Archetype Created Web Application</display-name>
</web-app>

前端控制器配置

<!--   配置前端控制器     -->
<servlet>
  <servlet-name>SpringMVC</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!--   指定Spring MVC配置文件的位置和名称     -->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:dispatcherServlet.xml</param-value>
  </init-param>
  <!--   设置启动加载优先级     -->
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <!--   /表示处理浏览器发送的所有不包括JSP的请求     -->
  <url-pattern>/</url-pattern>
</servlet-mapping>

Tomcat英文日志

//在VM Option添加配置
-Duser.language=en -Duser.region=CA -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8

配置Thymeleaf视图解析器

<!--   配置Thymeleaf视图解析器     -->
<bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
  <property name="order" value="1"/>
  <property name="characterEncoding" value="UTF-8"/>
  <property name="templateEngine">
    <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
      <property name="templateResolver">
        <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
          <!--   视图解析器前缀     -->
          <property name="prefix" value="/WEB-INF/templates/"/>
          <!--   视图解析器后缀     -->
          <property name="suffix" value=".html"/>
          <property name="templateMode" value="HTML5"/>
          <property name="characterEncoding" value="UTF-8"/>
        </bean>
      </property>
    </bean>
  </property>
</bean>

HTML引入Thymeleaf

<html lang="en" xmlns:th="http://www.thymeleaf.org">

字符编码过滤器

Tomcat服务器默认会根据本地Server.xml的URIEncoding="UTF-8"处理字符编码。
<!--   配置字符编码过滤器     -->
<filter>
  <filter-name>characterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <!--   设置编码类型为UTF-8     -->
  <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</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>

视图控制器

<!--   视图控制器     -->
<mvc:view-controller path="/vc" view-name="/vc"/>
<!--   开启MVC注解驱动     -->
<mvc:annotation-driven/>
<!--   处理静态资源     -->
<mvc:default-servlet-handler/>

隐藏方法过滤器

<!--   配置HiddenHttpMethodFilter[放在编码过滤器后面]     -->
<filter>
  <filter-name>hiddenHttpMethodFilter</filter-name>
  <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>hiddenHttpMethodFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<input type="hidden" name="_method" value="put"/>

日期消息转换器

<mvc:annotation-driven>
    <!-- 处理responseBody里面日期类型 -->
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                    <property name="dateFormat">
                        <bean class="java.text.SimpleDateFormat">
                            <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
                        </bean>
                    </property>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>