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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>ora.rain</groupId>
<artifactId>spring_mvc_static</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <dependencies>
<!-- SpringMVC (基于依赖的传递性,会间接引入Spring的依赖)-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
<!-- 日志(Thymeleaf必须要sl4j,logback则是sl4j的实现) -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- ServletAPI -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- Spring5和Thymeleaf整合包 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
</dependencies> </project>

9.1.6、配置web资源目录

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

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

9.1.7、配置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_4_0.xsd"
version="4.0"> <!--配置SpringMVC的前端控制器DispatcherServlet,对浏览器发送的请求统一进行处理-->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--通过初始化参数指定SpringMVC配置文件的位置和名称-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--将DispatcherServlet的初始化时间提前到服务器启动时-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <!--配置springMVC的编码过滤器-->
<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> </web-app>

9.1.8、创建SpringMVC的配置文件

<?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"> <!--在指定的包中,扫描bean组件-->
<context:component-scan base-package="online.liaojy"></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> <!--开启mvc的注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven> <!--
视图控制器(mvc:view-controller):为指定的请求直接设置(逻辑)视图名称,从而实现页面的跳转
-->
<mvc:view-controller path="/" view-name="index"></mvc:view-controller> </beans>

9.1.9、创建请求控制器

package online.liaojy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; /**
* @author liaojy
* @date 2023/10/24 - 20:15
*/
@Controller
public class PortalController {
@RequestMapping("/")
public String portal(){
return "index";
}
}

9.1.10、创建模板目录及页面模板

注意:html要引入thymeleaf的约束:xmlns:th="http://www.thymeleaf.org"

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body> <h1>index.html</h1> </body>
</html>

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>成功</title>
</head>
<body> <h1>success.html</h1> </body>
</html>

9.1.11、配置tomcat

9.2、引用图片的失败示例

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

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

<img th:src="@{/imgs/JAVAEE.png}">

9.2.3、测试效果

9.3、页面跳转的失败示例

9.3.1、页面请求示例

<a th:href="@{/static/page}">测试通过请求转发直接跳转到一个页面</a>

9.3.2、控制器方法示例

    @RequestMapping("/static/page")
public String toStaticPage(){
return "forward:/WEB-INF/templates/success.html";
}

9.3.3、测试效果

9.4、失败原因分析

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

9.5、解决方案

开启Tomcat默认servlet的处理器之后,DispatcherServlet处理不了的请求(没有对应的控制器方法)会交由Tomcat默认Servlet来处理;

注意:<mvc:default-servlet-handler>标签要和<mvc:annotation-driven>标签配合使用,否则所有的请求都会由Tomcat默认Servlet来处理。

    <!--开启默认servlet的处理器-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>

9.6、解决效果演示

9.6.1、引用图片

9.6.2、页面跳转

9、SpringMVC之处理静态资源的更多相关文章

  1. spring-mvc不拦截静态资源的配置

    spring-mvc不拦截静态资源的配置 标签: spring 2015-03-27 23:54 11587人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. &qu ...

  2. SpringMVC+FreeMarker实现静态资源文件自动添加版本号(md5)

    近日切换java开发,开始学习springframework.在实现静态资源文件自动计算版本号的实例时,因为不熟悉框架,走了不少弯路,好在最终解决了问题.这里写篇文章记录一下实现,也希望对大家有些用处 ...

  3. SpringMVC不能引入静态资源

    SpringMVC不能引入静态资源 问题:部署项目后程序加载或用浏览器访问时出现类似的警告, 2011-01-19 10:52:51,646 WARN [org.springframework.web ...

  4. springmvc、springboot静态资源访问配置

    如何访问项目中的静态资源? 一.springmvc springmvc中访问静态资源,如果DispatcherServlet拦截的为"",那么静态资源的访问也会交给Dispatch ...

  5. SpringMVC 部署项目静态资源文件访问问题

    问题:采用SpringMVC 部署项目后程序加载或用浏览器访问时出现类似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.web.servle ...

  6. springmvc中关于静态资源的放行

    参考:http://blog.csdn.net/fujiakai/article/details/52504525 方法1. 修改web.xml文件,增加对静态资源的url映射,要加在org.spri ...

  7. JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术

    在上篇博客中,我们聊了<JavaEE开发之SpringMVC中的自定义拦截器及异常处理>.本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js.css这些静态文件的加载配置 ...

  8. SpringMVC:处理静态资源

    方法1.采用<mvc:default-servlet-handler/> 若将 DispatcherServlet 请求映射配置为 /,则 Spring MVC 将捕获WEB 容器的所有请 ...

  9. SpringMVC REST 风格静态资源访问配置

    1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> ...

  10. springMVC中处理静态资源的几种方案

    处理静态资源方案一:在web.xml文件中配置如下: <!-- <!–解决静态资源方案–> <servlet-mapping> <servlet-name>d ...

随机推荐

  1. QuartusII调用 PLL_IP核方法(Mega Wizard)

    [基本信息] 要求:调用PLL-IP核,50Mhz晶振输入,输出四路时钟不同信号:100Mhz,25Mhz,50Mhz(90°相位),50Mhz(20%占空比). 芯片型号:cyclone Ⅳ EP4 ...

  2. RabbitMQ 进阶使用之延迟队列 → 订单在30分钟之内未支付则自动取消

    开心一刻 晚上,媳妇和儿子躺在沙发上 儿子疑惑的问道:妈妈,你为什么不去上班 媳妇:妈妈的人生目标是前20年靠父母养,后40年靠你爸爸养,再往后20年就靠你和妹妹养 儿子:我可养不起 媳妇:为什么 儿 ...

  3. drawio中添加数学公式

    1.drawio简介 drawio是一款免费开源的流程图绘制软件,由于软件免费,而且模块也很丰富,我比较喜欢用它. 软件下载地址:https://github.com/jgraph/drawio-de ...

  4. 解决使用`npm install`或`npm i`命令之后报`Unexpected token in JSON at position`错误的问题

    网上大多数的教程都是以下几个步骤挨个试一遍,包括 stackoverflow 上也是这么说的 删除node_modules文件夹 删除package-lock.json文件 强制清除npm缓存 npm ...

  5. 【Socket】解决UDP丢包问题

    一.介绍 UDP是一种不可靠的.无连接的.基于数据报的传输层协议.相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认.所以UDP的优势就是速度快,开销小.但是随 ...

  6. 点击li 该li变色

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. DeepFaceLab换脸使用

    将视频转换成图片,从图片中提取人脸,从人脸中学习特征.然后应用模型,先对图片进行换脸,然后把图片合成视频. 1.src视频分解图像 2.dst视频分解图像 3.src提取面部 4.dst提取面部 5. ...

  8. 没有 Git,如何下载 Gitee 代码?

    目录 没有 Git,如何下载 Gitee 代码? 注册 Gitee 账号 下载代码压缩包 没有 Git,如何下载 Gitee 代码? 鉴于看我博客的人很多都是大学本科生.非 CS 专业,大部分人都不会 ...

  9. 使用Xilinx SDK生成设备树

    章节描述: 介绍如何通过SDK生成设备树,以用于arm-Linux环境. 背景 开发环境: Windows:Vivado 2018.3 Linux :ubuntu 16.04 介绍: Device T ...

  10. Docker部署php运行环境

    编写docker-compose.yml配置文件,使用nginx作为web服务器,转发php的请求. version: "3" services: web: image: ngin ...