前言

项目在Spring–框架学习 | 花猪のBlog (cnhuazhu.top)一文中的Spring集成web环境的项目基础上进行开发。

项目结构如下:


概述

SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架

SpringMVC已经成为目前最主流的MVC框架之一。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。

项目搭建

流程说明

SpringMVC的开发步骤如下:

  • 导入SpringMVC相关坐标
  • 配置SpringMVC核心控制器DispathcerServlet
  • 创建Controller类和视图页面
  • 使用注解配置Controller类中业务方法的映射地址
  • 配置SpringMVC核心文件spring-mvc.xml
  • 客户端发起请求测试

操作

  • pom.xml配置文件中导入Spring和SpringMVC的坐标:

    1
    2
    3
    4
    5
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.5.RELEASE</version>
    </dependency>
  • web.xml配置文件中配置前端控制器:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!--配置SpringMVC的前端控制器-->
    <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>

    说明:

    • <load-on-startup>1</load-on-startup> :表示服务器启动时就加载servlet,创建对象。(不写则默认访问时才加载)
    • <url-pattern>/</url-pattern>:标名任何访问都要经过该控制器
  • /src/main/webapp目录下新建success.jsp文件(视图页面):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <h1>Success!</h1>
    </body>
    </html>

  • /src/main/java/mvc目录下新建controller文件夹,用于充当临时web层测试,在其中编写UserController类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;

    @Controller
    public class UserController {
    @RequestMapping("/quick")
    public String save() {
    System.out.println("Controller save running....");
    return "success.jsp";
    }
    }

    说明:

    • @RequestMapping("/quick"):表示访问/quick会调用save()方法,该方法中的返回值就是跳转的视图页面
  • /src/main/resources目录下新建spring-mvc.xml配置文件,在其中添加Controller的组件扫描:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!--Controller的组件扫描-->
    <context:component-scan base-package="mvc.controller"></context:component-scan>
    </beans>
  • 启动tomcat服务,浏览器访问http://localhost:8080/quick,可以看到跳转至success视图页面,并在控制台输出打印:

访问流程说明

  1. 首先浏览器访问http://localhost:8080/quick,发起请求

  2. 然后找tomcat,通过tomcat去找内部工程

  3. 接着找到前端控制器Servlet(配置缺省/

  4. 下一步前端控制器根据请求的资源去解析,找对应的请求资源/quick

后记

前端控制器的配置相当于一个核心的Servlet,通过配置缺省/,所有的请求都要先通过它,进而该控制器再去根据响应的请求去访问其他的资源。