1、搭建MavenWeb项目环境
(1)在父项目中新建一个Module
,并在其中创建一个Maven子项目,项目名称为SpringMVC_01_Demo
(2)手动在src.main.java
下,创建webapp
目录,然后通过Project Structure
,在webapp
目录下创建WEB-INF/web.xml
文件
2、设置子模块的打包方式为,打war包并引入依赖
<dependencies>
<!--SpringMVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
<!--日志-->
<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>
<!--Spring和Thymeleaf整合包-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
</dependencies>
这里的其余底层依赖由Maven自动导入
注意servlet的作用范围,否则部署时容易出问题。
3、注册Spring前端控制器
在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的前端控制器,对浏览器发送的请求进行统一处理-->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--将前端控制器的初始化时机,提前到服务器启动时-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!--设置SpringMVC的核心控制器所能处理的请求的请求路径-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
注:(中心控制器)DispatcherServlet
(请求分发器,又称“前置控制器”、“中心控制器”),它是整个SpringMVC
的控制中心(核心),它也是一个实际的Servlet
。
4、配置处理映射器、处理器适配器和视图解析器
在该子项目的resources
目录下创建一个SpringMVC
的配置文件,名称为:springmvc-servlet.xml
并在其中添加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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
关于请求路径的匹配
/ 所能匹配的请求可以是 /login 或 .html 或 .js 或.css方式的请求路径,但是 / 不匹配 .jsp请求路径的请求.jsp的请求不应该被前端控制器捕获,因为jsp文件需要专门的Servlet来处理,才能显示jsp页面。所以前端控制器并不需要处理jsp。这里不能使用 /* ,因为 /* 会捕获所有请求,造成jsp文件被拦截,导致jsp页面丢失,不能显示
5.创建请求控制器
-
什么是请求控制器
-
SpringMVC的控制器由一个POJO担任,负责处理具体请求。请求控制器中每一个处理请求的方法称为 控制器方法
-
-
为什么需要请求控制器
-
由于前端控制器需要对浏览器发送的请求进行统一处理,但不同的具体请求有具体的处理方式,因此需要编写处理具体请求的逻辑。
-
通过接口创建Controller
在子项目的java
目录下创建一个 com.JAVAClass.zcm
包,并在包下创建HelloSpringController.java
文件:
package com.JAVAClass.zcm;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloSpringController {
//访问/WEB-INF/templates/index.html
@RequestMapping("/")
public String index(){
System.out.println("请求收到");
//返回视图名称
return "index";
}
}
6、编写前端页面
在子项目的web/WEB-INF
目录下新建一个jsp
包,并在该包下新 index.jsp
文件 和 target.html
文件
index.jsp 文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>Hello,SpringMVC</h3>
<a th:href="@{/target}">点击访问target.html</a>
</body>
</html
target.html 文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>Welcome to target.html</h3>
</body>
</html>
在控制器中添加方法
@RequestMapping("/target")
public String toTarget(){
System.out.println("请求收到");
//返回视图名称
return "target";
}
添加tomcat配置
关注 “JAVA学习课堂” 微信公众号,获取更多学习笔记。回复ssm获取笔记哦