1.web.xml
两个过滤器
一个前端控制器
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 处理编码的过滤器-->
<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>ForceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 处理请求方法的过滤器-->
<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>
<!-- 前端控制器-->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.spring_mvc.xml
8个配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 1.扫描组件-->
<context:component-scan base-package="com.zh.springmvc"></context:component-scan>
<!--2. 配置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>
<!--3.配置默认的servlet处理静态资源
当前工程的web.xml配置的前端控制器DispatcherServlet的url-pattren是/
tomcat的web.xml配置的DefaultServlet的url-pattern也是/
此时,浏览器发送的请求会优先被DispatcherServlet进行处理,但是DispatcherServlet无法处理静态资源
若配置了 <mvc:default-servlet-handler/>和 <mvc:annotation-driven/>
浏览器发送的请求会先被DispatcherServlet处理,无法处理再交给DefaultServlet处理
-->
<mvc:default-servlet-handler/>
<!-- 4.开启mvc注解驱动 -->
<!--
处理静态资源,例如html、js、css、jpg
若只设置该标签,则只能访问静态资源,其他请求则无法访问
此时必须设置<mvc:annotation-driven/>解决问题
-->
<mvc:annotation-driven/>
<!--
5.视图控制器:为当前的请求直接设置视图名称实现页面跳转
若设置视图控制器,则只有视图控制器所设置的请求会被处理,其他的请求将全部404
此时必须有一个标签 <mvc:annotation-driven>
path:设置处理的请求地址
view-name:设置请求地址所对应的视图名称
-->
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
<!-- 6.配置文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
<!--<!– 7.配置拦截器–>-->
<!--<!– <bean id="firstInterceptor" class="com.zh.springmvc.interceptor.FirstInterceptor"></bean>–>-->
<!-- <mvc:interceptors>-->
<!--<!– bean和ref标签所配置的拦截器默认对DispatcherServlet处理的所有请求进行拦截–>-->
<!--<!– <bean class="com.zh.springmvc.interceptor.FirstInterceptor"></bean>–>-->
<!--<!– <ref bean="firstInterceptor" ></ref>–>-->
<!--<!– 下面这个更精确–>-->
<!-- <mvc:interceptor>-->
<!--<!– /* :表示上下文目录的一层-->
<!-- /** :表示当前目录下的所有的路径–>-->
<!--<!– 配置需要拦截的请求的请求路径–>-->
<!-- <mvc:mapping path="/**"/>-->
<!--<!– 配置需要拦截的请求的请求路径–>-->
<!-- <mvc:exclude-mapping path="/abc" />-->
<!--<!– 配置拦截器–>-->
<!-- <ref bean="firstInterceptor"></ref>-->
<!-- </mvc:interceptor>-->
<!-- </mvc:interceptors>-->
<!--<!– –>-->
<!-- 8.异常解析器-->
<!-- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">-->
<!-- <property name="exceptionMappings">-->
<!-- <props>-->
<!--<!– key设置要处理的异常,value设置出现该异常时要跳转的页面所对应的逻辑视图–>-->
<!-- <prop key="java.lang.ArithmeticException">error</prop>-->
<!-- </props>-->
<!-- </property>-->
<!--<!– 设置请求域中的异常信息的属性名–>-->
<!-- <property name="exceptionAttribute" value="ex"></property>-->
<!-- </bean>-->
</beans>