1、搭建MavenWeb项目环境

(1)在父项目中新建一个Module,并在其中创建一个Maven子项目,项目名称为SpringMVC_01_Demo

(2)手动在src.main.java下,创建webapp目录,然后通过Project Structure,在webapp目录下创建WEB-INF/web.xml文件

【无标题】_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的作用范围,否则部署时容易出问题。

【无标题】_hadoop_02

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>

【无标题】_hadoop_03

注:(中心控制器)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>

【无标题】_hadoop_04

关于请求路径的匹配

/ 所能匹配的请求可以是 /login 或 .html 或 .js 或.css方式的请求路径,但是 / 不匹配 .jsp请求路径的请求.jsp的请求不应该被前端控制器捕获,因为jsp文件需要专门的Servlet来处理,才能显示jsp页面。所以前端控制器并不需要处理jsp。这里不能使用 /* ,因为 /* 会捕获所有请求,造成jsp文件被拦截,导致jsp页面丢失,不能显示

5.创建请求控制器

  1. 什么是请求控制器
  1. SpringMVC的控制器由一个POJO担任,负责处理具体请求。请求控制器中每一个处理请求的方法称为 控制器方法
  1. 为什么需要请求控制器
  1. 由于前端控制器需要对浏览器发送的请求进行统一处理,但不同的具体请求有具体的处理方式,因此需要编写处理具体请求的逻辑。

通过接口创建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配置

【无标题】_xml_05

【无标题】_xml_06

【无标题】_xml_07

【无标题】_数据仓库_08

关注 “JAVA学习课堂” 微信公众号,获取更多学习笔记。回复ssm获取笔记哦

【无标题】_数据仓库_09