9、SpringMVC之处理静态资源

打印 上一主题 下一主题

主题 891|帖子 891|积分 2673

9.1、环境搭建

9.1.1、在project创建新module


9.1.2、选择maven


9.1.3、设置module名称和路径



9.1.4、module初始状态


9.1.5、配置打包方式和引入依赖


注意:默认的打包方式为 jar,为了能配置web资源,需要将打包方式设置为 war
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.    
  4.     <mvc:default-servlet-handler></mvc:default-servlet-handler> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.    
  6.     <mvc:default-servlet-handler></mvc:default-servlet-handler> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  7.     <modelVersion>4.0.0</modelVersion>
  8.     <groupId>ora.rain</groupId>
  9.     <artifactId>spring_mvc_static</artifactId>
  10.     <version>1.0-SNAPSHOT</version>
  11.     <packaging>war</packaging>
  12.     <dependencies>
  13.    
  14.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  15.    
  16.     <mvc:default-servlet-handler></mvc:default-servlet-handler><dependency>
  17.    
  18.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <groupId>org.springframework</groupId>
  19.    
  20.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <artifactId>spring-webmvc</artifactId>
  21.    
  22.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <version>5.3.1</version>
  23.    
  24.     <mvc:default-servlet-handler></mvc:default-servlet-handler></dependency>
  25.    
  26.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  27.    
  28.     <mvc:default-servlet-handler></mvc:default-servlet-handler><dependency>
  29.    
  30.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <groupId>ch.qos.logback</groupId>
  31.    
  32.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <artifactId>logback-classic</artifactId>
  33.    
  34.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <version>1.2.3</version>
  35.    
  36.     <mvc:default-servlet-handler></mvc:default-servlet-handler></dependency>
  37.    
  38.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  39.    
  40.     <mvc:default-servlet-handler></mvc:default-servlet-handler><dependency>
  41.    
  42.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <groupId>javax.servlet</groupId>
  43.    
  44.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <artifactId>javax.servlet-api</artifactId>
  45.    
  46.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <version>3.1.0</version>
  47.    
  48.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <scope>provided</scope>
  49.    
  50.     <mvc:default-servlet-handler></mvc:default-servlet-handler></dependency>
  51.    
  52.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  53.    
  54.     <mvc:default-servlet-handler></mvc:default-servlet-handler><dependency>
  55.    
  56.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <groupId>org.thymeleaf</groupId>
  57.    
  58.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <artifactId>thymeleaf-spring5</artifactId>
  59.    
  60.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <version>3.0.12.RELEASE</version>
  61.    
  62.     <mvc:default-servlet-handler></mvc:default-servlet-handler></dependency>
  63.     </dependencies>
  64. </project>
复制代码
9.1.6、配置web资源目录


打开Project Structure,选择对应的module,并为该module创建一个web.xml文件

注意:web.xml文件需要放到web资源路径(工程路径\src\main\webapp)下

9.1.7、配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3.    
  4.     <mvc:default-servlet-handler></mvc:default-servlet-handler> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.    
  6.     <mvc:default-servlet-handler></mvc:default-servlet-handler> xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  7.    
  8.     <mvc:default-servlet-handler></mvc:default-servlet-handler> version="4.0">
  9.    
  10.     <servlet>
  11.    
  12.     <mvc:default-servlet-handler></mvc:default-servlet-handler><servlet-name>SpringMVC</servlet-name>
  13.    
  14.     <mvc:default-servlet-handler></mvc:default-servlet-handler><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  15.    
  16.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  17.    
  18.     <mvc:default-servlet-handler></mvc:default-servlet-handler><init-param>
  19.    
  20.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-name>contextConfigLocation</param-name>
  21.    
  22.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-value>classpath:springmvc.xml</param-value>
  23.    
  24.     <mvc:default-servlet-handler></mvc:default-servlet-handler></init-param>
  25.    
  26.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  27.    
  28.     <mvc:default-servlet-handler></mvc:default-servlet-handler><load-on-startup>1</load-on-startup>
  29.     </servlet>
  30.     <servlet-mapping>
  31.    
  32.     <mvc:default-servlet-handler></mvc:default-servlet-handler><servlet-name>SpringMVC</servlet-name>
  33.    
  34.     <mvc:default-servlet-handler></mvc:default-servlet-handler><url-pattern>/</url-pattern>
  35.     </servlet-mapping>
  36.    
  37.     <filter>
  38.    
  39.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-name>CharacterEncodingFilter</filter-name>
  40.    
  41.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  42.    
  43.     <mvc:default-servlet-handler></mvc:default-servlet-handler><init-param>
  44.    
  45.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  46.    
  47.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-name>encoding</param-name>
  48.    
  49.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-value>UTF-8</param-value>
  50.    
  51.     <mvc:default-servlet-handler></mvc:default-servlet-handler></init-param>
  52.    
  53.     <mvc:default-servlet-handler></mvc:default-servlet-handler><init-param>
  54.    
  55.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  56.    
  57.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-name>forceEncoding</param-name>
  58.    
  59.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <param-value>true</param-value>
  60.    
  61.     <mvc:default-servlet-handler></mvc:default-servlet-handler></init-param>
  62.     </filter>
  63.     <filter-mapping>
  64.    
  65.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-name>CharacterEncodingFilter</filter-name>
  66.    
  67.     <mvc:default-servlet-handler></mvc:default-servlet-handler><url-pattern>/*</url-pattern>
  68.     </filter-mapping>
  69.    
  70.     <filter>
  71.    
  72.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-name>HiddenHttpMethodFilter</filter-name>
  73.    
  74.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  75.     </filter>
  76.     <filter-mapping>
  77.    
  78.     <mvc:default-servlet-handler></mvc:default-servlet-handler><filter-name>HiddenHttpMethodFilter</filter-name>
  79.    
  80.     <mvc:default-servlet-handler></mvc:default-servlet-handler><url-pattern>/*</url-pattern>
  81.     </filter-mapping>
  82. </web-app>
复制代码
9.1.8、创建SpringMVC的配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xmlns:context="http://www.springframework.org/schema/context"
  5.        xmlns:mvc="http://www.springframework.org/schema/mvc"
  6.        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">
  7.    
  8.     <context:component-scan base-package="online.liaojy"></context:component-scan>
  9.    
  10.     <bean id="viewResolver" >
  11.    
  12.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="order" value="1"/>
  13.    
  14.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="characterEncoding" value="UTF-8"/>
  15.    
  16.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="templateEngine">
  17.    
  18.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <bean >
  19.    
  20.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  21.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="templateResolver">
  22.    
  23.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  24.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    <bean
  25.    
  26.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  27.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  28.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    >
  29.    
  30.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  31.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  32.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  33.    
  34.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  35.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  36.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="prefix" value="/WEB-INF/templates/"/>
  37.    
  38.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  39.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  40.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
  41.    
  42.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  43.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  44.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="suffix" value=".html"/>
  45.    
  46.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  47.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  48.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="templateMode" value="HTML5"/>
  49.    
  50.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  51.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  52.     <mvc:default-servlet-handler></mvc:default-servlet-handler><property name="characterEncoding" value="UTF-8" />
  53.    
  54.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  55.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    </bean>
  56.    
  57.     <mvc:default-servlet-handler></mvc:default-servlet-handler>   
  58.     <mvc:default-servlet-handler></mvc:default-servlet-handler></property>
  59.    
  60.     <mvc:default-servlet-handler></mvc:default-servlet-handler>    </bean>
  61.    
  62.     <mvc:default-servlet-handler></mvc:default-servlet-handler></property>
  63.     </bean>
  64.    
  65.     <mvc:annotation-driven></mvc:annotation-driven>
  66.    
  67.     <mvc:view-controller path="/" view-name="index"></mvc:view-controller>
  68. </beans>
复制代码
9.1.9、创建请求控制器

  1. package online.liaojy.controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. /**
  5. * @author liaojy
  6. * @date 2023/10/24 - 20:15
  7. */
  8. @Controller
  9. public class PortalController {
  10.     @RequestMapping("/")
  11.     public String portal(){
  12.    
  13.     <mvc:default-servlet-handler></mvc:default-servlet-handler>return "index";
  14.     }
  15. }
复制代码
9.1.10、创建模板目录及页面模板


注意:html要引入thymeleaf的约束:xmlns:th="http://www.thymeleaf.org"
  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>首页</title>
  6. </head>
  7. <body>
  8. <h1>index.html</h1>
  9. </body>
  10. </html>
复制代码
  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>成功</title>
  6. </head>
  7. <body>
  8. <h1>success.html</h1>
  9. </body>
  10. </html>
复制代码
9.1.11、配置tomcat



9.2、引用图片的失败示例

9.2.1、创建图片目录并放置图片


9.2.2、在html引用工程中的图片

  1. <img th:src="@{/imgs/JAVAEE.png}">
复制代码
9.2.3、测试效果



9.3、页面跳转的失败示例

9.3.1、页面请求示例

  1. <a th:target="_blank" href="https://www.cnblogs.com/@{/static/page}">测试通过请求转发直接跳转到一个页面</a>
复制代码
9.3.2、控制器方法示例

  1.     @RequestMapping("/static/page")
  2.     public String toStaticPage(){
  3.    
  4.     <mvc:default-servlet-handler></mvc:default-servlet-handler>return "forward:/WEB-INF/templates/success.html";
  5.     }
复制代码
9.3.3、测试效果




9.4、失败原因分析


因为DispatcherServlet接管了所有请求,所以导致tomcat中处理静态资源的默认Servlet不再生效。
9.5、解决方案


开启Tomcat默认servlet的处理器之后,DispatcherServlet处理不了的请求(没有对应的控制器方法)会交由Tomcat默认Servlet来处理;
注意:标签要和标签配合使用,否则所有的请求都会由Tomcat默认Servlet来处理。
  1.    
  2.     <mvc:default-servlet-handler></mvc:default-servlet-handler>
复制代码
9.6、解决效果演示

9.6.1、引用图片


9.6.2、页面跳转





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表