创建项目(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处理、拦截器、异常捕获器、验证码等,和大家分享一下学习的过程。

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

Spring MVC——项目的开发流程的更多相关文章

  1. Spring Boot 2.X(三):使用 Spring MVC + MyBatis + Thymeleaf 开发 web 应用

    前言 Spring MVC 是构建在 Servlet API 上的原生框架,并从一开始就包含在 Spring 框架中.本文主要通过简述 Spring MVC 的架构及分析,并用 Spring Boot ...

  2. IntelliJ IDEA上创建maven Spring MVC项目

    IntelliJ IDEA上创建Maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

  3. maven Spring MVC项目

    IntelliJ IDEA上创建maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.x ...

  4. Java Spring MVC项目搭建(二)——项目配置

    1.站点配置文件web.xml 每一个Spring MVC 项目都必须有一个站点配置文件web.xml,他的主要功能吗....有一位大哥已经整理的很好,我借来了,大家看看: 引用博客地址: http: ...

  5. Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置

    Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...

  6. IDEA 创建Spring MVC项目搭建

    概述 IntelliJ IDEA是一款更加集成智能的开发工具,相对Myeclipse开发而言,使用起来相对更加的方便:初步手动使用IDEA搭建Spring MVC项目,现将操作流程整理记录如下. 环境 ...

  7. 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目

    1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...

  8. 自建一个Java Spring MVC项目

    用IDEA Intellij,本来创建的是SpringMVC项目,但是下载的时候,太慢了.所以还是用的Maven项目. 选择Maven 项目->Archetype->Web applica ...

  9. maven 纯注解一步一步搭建Spring Mvc项目(入门)

    初次接触spring MVC项目,通过一段时间的学习,本文介绍一种以纯注解的方法去配置spring MVC环境,让那些配置的.xml文件统统见鬼吧. 什么是Spring MVC Spring MVC属 ...

随机推荐

  1. ServletRequest使用介绍

    ServletRequest: 定义将客户端请求信息提供给某个 servlet 的对象:servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该servlet的serv ...

  2. Stream(四)

    public class Test { /* * 创建:一步 * 中间:0~n步 * 终结:一步 * * 三.终结操作 * 1.void forEach(Consumer ):遍历流中的数据 * 2. ...

  3. java关键字之abstract

    Java 允许类,借口或成员方法具有抽象属性. abstract  修饰的类叫做抽象类,该类不能被实例化. abstract  修饰的方法叫抽象方法,抽象方法只有声明部分,没有具体的方法体. 接口总是 ...

  4. 20202427-张启辰《Python3初学:罗马数字转阿拉伯数字》

    目录 20202427-张启辰<Python3初学:罗马数字转阿拉伯数字> 1.规则 2.局限性 3.Python3解决 20202427-张启辰<Python3初学:罗马数字转阿拉 ...

  5. NB-IOT覆盖范围有多大 NB-IOT的强覆盖是怎么实现的

    NB-IoT技术自出现以来就以其强大的覆盖范围和通讯距离长而受到广泛的欢迎,发展到现在已经成为万物互联网络中的一个重要分支.那么NB-IoT覆盖范围到底有多大,是怎么来衡量其覆盖能力? 强大的覆盖范围 ...

  6. 使用java动态字节码技术简单实现arthas的trace功能。

    参考资料 ASM 系列详细教程 编译时,找不到asm依赖 用过[Arthas]的都知道,Arthas是alibaba开源的一个非常强大的Java诊断工具. 不管是线上还是线下,我们都可以用Arthas ...

  7. js 元素添加多个监听

    function addListener(element,e,fn){     if(element.addEventListener){         element.addEventListen ...

  8. 腾讯开源 APIJSON 连创五个第一

    腾讯第一个码云推荐项目,// 其它最早创建的是 TencentOS-tiny(码云) 2019.8.23 腾讯第一个码云GVP项目,// 其它最早创建的是 TencentOS-tiny(码云) 201 ...

  9. 【SpringBoot】16. 如何监控springboot的健康状况

    如何监控springboot的健康状况 SpringBoot1.5.19.RELEASE 一.使用Actuator检查与监控 actuaotr是spring boot项目中非常强大的一个功能,有助于对 ...

  10. 4、Django之视图层

    一 视图函数 视图函数,简称视图,属于Django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数,所以研究视图函数只需熟练掌握两个对象即可:请求对象(Htt ...