【SpringMVC】web.xml和spring_mvc.xml文件配置

1.web.xml

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

XML 复制代码
<?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">

    <context:component-scan base-package="com.zh.springmvc.controller"></context:component-scan>

    <!-- 配置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>

        <!--配置默认的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/>
    <!--
        视图控制器:为当前的请求直接设置视图名称实现页面跳转
        若设置视图控制器,则只有视图控制器所设置的请求会被处理,其他的请求将全部404
        此时必须有一个标签 <mvc:annotation-driven>
        path:设置处理的请求地址
        view-name:设置请求地址所对应的视图名称
    -->
    <!-- 开启mvc注解驱动 -->
    <!--
       处理静态资源,例如html、js、css、jpg
       若只设置该标签,则只能访问静态资源,其他请求则无法访问
       此时必须设置<mvc:annotation-driven/>解决问题
   -->
        <mvc:annotation-driven/>
        <mvc:view-controller path="/" view-name="index"></mvc:view-controller>



    <!-- 开启mvc注解驱动 -->
<!--    <mvc:annotation-driven>-->
<!--        <mvc:message-converters>-->
<!--            &lt;!&ndash; 处理响应中文内容乱码 &ndash;&gt;-->
<!--            <bean-->
<!--                    class="org.springframework.http.converter.StringHttpMessageConverter">-->
<!--                <property name="defaultCharset" value="UTF-8" />-->
<!--                <property name="supportedMediaTypes">-->
<!--                    <list>-->
<!--                        <value>text/html</value>-->
<!--                        <value>application/json</value>-->
<!--                    </list>-->
<!--                </property>-->
<!--            </bean>-->
<!--        </mvc:message-converters>-->
<!--    </mvc:annotation-driven>-->
</beans>
相关推荐
邓不利东1 小时前
Spring中过滤器和拦截器的区别及具体实现
java·后端·spring
草履虫建模2 小时前
Redis:高性能内存数据库与缓存利器
java·数据库·spring boot·redis·分布式·mysql·缓存
苹果醋32 小时前
Vue3组合式API应用:状态共享与逻辑复用最佳实践
java·运维·spring boot·mysql·nginx
Micro麦可乐2 小时前
Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
java·开发语言·加密算法·aes加解密·rsa加解密·hash算法
掉鱼的猫2 小时前
Java MCP 鉴权设计与实现指南
java·openai·mcp
努力的小郑3 小时前
Spring三级缓存硬核解密:二级缓存行不行?一级缓存差在哪?
java·spring·面试
手握风云-3 小时前
JavaEE初阶第七期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(五)
java·开发语言
发仔1233 小时前
使用Canal实现MySQL到Elasticsearch数据同步
java·后端
hello早上好3 小时前
Spring AOP:从代理创建到切点匹配
java·后端·spring
chanalbert3 小时前
从单体到微服务:Spring Cloud 开篇与微服务设计
spring boot·spring·spring cloud