这里要注意一下,我们是基于Maven开发项目,当然是要配置Maven环境的,如果大家之前从来没有配置过Maven,项目创建完成后需要配置一下,否则Maven无法自动为我们导入依赖。

创建完成之后是这样子如下图所示,左边是项目结构,右边是自动打开的Maven的pom.xml依赖配置文件。

项目中的文件目录如果大家有所疑问可以参考这篇 文章 ,在这我就不做过多阐述了。

接下来要导入Spring MVC项目的依赖了:

① Spring MVC有一个核心依赖。

② 我们创建的是一个web项目,因此还需要导入web相关的依赖。

因为这个项目比较简单,没有复杂的功能,所以我们导入上面两个依赖就好了,在后续的开发中,我们可以根据需要导入其他依赖项,如:json处理依赖、验证码组件依赖、文件上传依赖等。

我们只需在pom.xml文件的project标签中加入如下配置就好了:

<dependencies>
    <!--1.Spring MVC核心依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.1.6.RELEASE</version>
    </dependency>
    <!-- 2.web相关依赖-->
    <dependency>
        <!-- jstl 支持 -->
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <!-- servlet编译环境 -->
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <!-- jsp编译环境 -->
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

web应用配置

war包配置

这是一个web项目,在项目开发完成后可以部署到服务器上,如何部署呢?我们可以把项目打包成一个war包,然后部署。因此,我们需要在pom.xml中配置一下,将如下信息加入到pom.xml的project标签内

<packaging>war</packaging>

一般放到这个位置:

创建web目录

在main目录下创建webapp文件夹,然后在webapp文件夹内创建WEB-INF文件夹,结果如下:

webapp目录 就是我们的web目录,里面存放动态、静态资源和配置文件,如jsp文件、js文件、css文件、HTML文件等。

WEB-INF目录 下只有一个文件,就是我们的web配置文件:web.xml。

生成web.xml

接下来,我们要生成我们的web.xml配置文件。我们让IDEA自动给我们生成,会自动生成顶部配置,这样我们就不用自己写了,步骤如下:

下一步, 纠正web.xml的生成位置:

然后依次点击OK、OK,web.xml就生成了,效果如下:

前端控制器

前端控制器是Spring MVC的核心,也称核心控制器。

前端控制器的作用

1. 前端,负责接受所有请求。

2. 加载mvc.xml,启动Spring MVC工厂。

3. Spring MVC流程调度。

下来我们来配置一下前端控制器,在刚生成的web.xml 文件的web-app标签中加入我们的前端控制器,配置如下:

<!--Spring MVC的前端(核心)控制器-->
<servlet>
    <servlet-name>mvc.ss</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--可选配置-->
    <!--servlet默认是懒汉式加载的,此配置设置其为饿汉式加载-->
    <load-on-startup>1</load-on-startup>
</servlet>
<!--设置接收所有请求-->
<servlet-mapping>
    <servlet-name>mvc.ss</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

后端控制器

创建后端控制器

前端控制器接受的请求,会根据url委派制相应的后端控制器去处理,然后将结果返回至前端控制器,然后前端控制器再进一步委派。所以后端控制器就是处理我们请求的,它实际是一个类,类中有许多的方法,对应一个一个的url访问路径,让我们来配置一下它吧。

在java目录下创建包:com.ss.web,然后在包中创建控制器类:HelloController.java。

配置后端控制器

现在的HelloController.java还不是一个真正的后端控制器,因为我们还没有配置,我们做如下配置:

package com.ss.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller     // 声明控制器
@RequestMapping("/home")    // 主路径
public class HelloController {
    @RequestMapping("/hello")   // 从路径,对应:/home/hello
    public String hello(){
        System.out.println("业务一执行");
        return "hello";
    @RequestMapping("/goods")   // 从路径,对应:/home/goods
    public String login(){
        System.out.println("业务二执行");
        return "goods";

这就是一个后端控制器了,这里需要说明两点:

  ① 此时的后端控制器并没有作用,因为我们没有配置注解相关的信息,注解是失效的,在后面我们会配置。

  ② return语句会跳转到相应的页面,如 return "hello"; 这句的作用是跳转到名为hello的页面,此时也是失效的,因为我们还没有配置视图解析器,下面我们会配置一下。

  既然要跳转页面,我们当然需要写一下相应的页面。

  在webapp目录创建两个文件:hello.jsp 和 goods.jsp。

hello.jsp 内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <title>hello</title>
</head>
</body>
</html>

goods.jsp 内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <title>goods</title>
</head>
</body>
</html>

Spring MVC配置文件

  mvc.xml是Spring MVC项目的配置文件,我们要先创建mvc.xml,然后在里面配置我们的注解扫描、注解驱动、视图解析器等配置信息。

mvc.xml配置如下:

<beans     xmlns="http://www.springframework.org/schema/beans"
          xmlns:context="http://www.springframework.org/schema/context"
          xmlns:mvc="http://www.springframework.org/schema/mvc"
          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
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context.xsd
                            http://www.springframework.org/schema/mvc
                            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--注解扫描-->
    <context:component-scan base-package="com.ss.web"/>
    <!--注解驱动-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

  此时,我们的后端控制器才正式生效,因为我们配置了注解扫描和注解驱动,注解才会有效;配置了视图管理器,才能把return语句返回的字符串拼接成一个页面的url,进一步完成跳转的功能。 

注册mvc.xml

  我们写好Spring MVC配置文件后,还需去加载它。还记得前端控制器的作用吗?有一个作用就是加载mvc.xml配置文件,启动Spring MVC工厂,我们在上面并没有配置它,接下来我们配置一下:

  我们要在前端控制器内注册我们的mvc.xml配置文件,配置如下:

<!--Spring MVC的前端(核心)控制器-->
<servlet>
    <servlet-name>mvc.ss</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--启动SpringMVC工厂,加载mvc.xml-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:mvc.xml</param-value>
    </init-param>
    <!--可选配置-->
    <!--servlet默认是懒汉式加载的,此配置设置其为饿汉式加载-->
    <load-on-startup>1</load-on-startup>
</servlet>

  配置好后,项目启动后,前端控制器启动后就会加载我们的mvc.xml配置文件了。

配置tomcat

  接下来,我们要配置我们的web服务器了,步骤如下:

  好了,一个简单的Spring MVC项目搭建完毕,如果有时间的话,我会继续深入的来完善这个Spring MVC项目,增加一下其他功能,如参数传递、json处理、拦截器、异常捕获器、验证码等,和大家分享一下学习的过程。

  感谢道友的阅读,如有不足之处,还望不吝赐教!☺