Spring MVC——项目的开发流程

创建项目(IDEA下)

  打开IDEA,我们开始创建一个简单的Spring MVC项目,流程如下:

  这里要注意一下,我们是基于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" %>
<html>
<head>
    <title>hello</title>
</head>
<body>
    道友好!
</body>
</html>

goods.jsp 内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>goods</title>
</head>
<body>
    商品页面
</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服务器了,步骤如下:

  好了,到此为止,tomcat配置完成。

 


启动项目、测试

  我们项目已经搭建完毕了,我们来测试一下吧。

  启动项目,然后在浏览器访问一下:

 

 

  回车后结果如下,成功访问:

 

 

  再测试一下另一个,输入:

 

  结果如下,也是成功访问:

 

 

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

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

posted @ 2020-11-23 14:20  城北有个混子  阅读(2387)  评论(0编辑  收藏  举报