前言

SpringMVC是一个实现了Web MVC设计模式的轻量级Web框架。它与前辈Struts 2框架一样,都属于MVC框架,因为其使用和性能等方面比Struts 2更加优异,所以Spring MVC是现在比较主流的MVC框架。

先简单概括一下SpringMVC的主要特点:

灵活性强,容易与其他框架集成;提供了前端控制器DispatcherServlet;支持多种视图技术,如JSP、FreeMarker等视图技术;支持国际化;

And So On…

接下来,开始写我们的第一个Spring MVC应用。

开发工具

intelliJ IDEA (版本2020.2.2)与浏览器

创建项目

步骤1:打开IDEA,新建项目(New Project)。

步骤2:选择Maven,按默认的来,直接点击右下角Next。接着输入项目名,按默认的来,直接点击右下角Next。

步骤3:创建完Maven项目后,点击项目名右键,选择添加框架支持(Add Framework Support…)

步骤4:勾选Web Application(4.0),点击Next。

步骤5:完成以上步骤,最终的项目结构如下:

引入依赖Jar包

在pom.xml中,导入Maven依赖Jar包,如下:

<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
</dependencies>

提示: 导入依赖Jar包后,需要点击右侧的Maven,然后刷新一下才能生效。具体如下:

查看依赖Jar包是否导入成功:

配置前端控制器

在web.xml中,配置SpringMVC的前端控制器DispatcherServlet。

在此之前,需要在src/main/resources目录下新建springmvc-config.xml文件。

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"> <servlet>
<!-- 配置前端过滤器 -->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化加载配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!-- 表示容器在启动时立即加载Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

提示: 在<servlet-mapping>中,通过<url-pattern>元素的/,会将所有的URL拦截,并交由DispatcherServlet处理。

创建Controller类

在src/main/java目录下,新建一个com.study.controller包,并在包中创建控制器类HelloController,需要实现Controller接口。

提示: 实现的Controller接口必须是org.springframework.web.servlet.mvc包下的才可以。

在重写Controller接口中的handleRequest方法时,可能会出现如下报错:

解决办法:

在pom.xml中,导入所需的依赖Jar包,如下:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>

HelloController.java如下:

package com.study.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
//创建ModelAndView对象
ModelAndView mav = new ModelAndView();
//向模型对象中添加数据
mav.addObject("msg","这是我的第一个SpringMVC程序");
//设置逻辑视图名
mav.setViewName("/WEB-INF/jsp/hello.jsp");
//返回ModelAndView对象
return mav;
}
}

本案例中,向模型对象中添加了一个名称为msg的字符串对象,并设置返回的逻辑视图路径为/WEB-INF/jsp/hello.jsp,这样,请求就会被转发到hello.jsp页面。

创建视图页面

在WEB-INF目录下,新建一个jsp文件夹,并在文件夹中新建一个hello.jsp页面文件,然后在该页面使用EL表达式获取msg中的信息。

hello.jsp,如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>

创建Spring MVC的配置文件,配置控制器映射信息

在第四步中,我们已经在src/main/resources目录下新建了一个springmvc-config.xml文件。接下来,我们需要配置控制器映射信息。

springmvc-config.xml,如下:

<?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
https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置处理器Handle,映射"/helloController"请求 -->
<bean name="/helloController" class="com.study.controller.HelloController" />
<!-- 处理器映射器,将处理Handle的name作为url进行查找 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<!-- 处理器适配器,配置对处理器中handleRequest()方法的调用 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>

启动项目,测试应用

需要配置Tomcat来启动项目,具体步骤如下:

步骤1:点击上方Add Configureation…

步骤2:点击左上方+,选择Tomcat Server下的Local。

步骤3:点击右下角的Fix。修改Application context为/,接着点击Apply->OK。

完成以上步骤,就可以开始运行项目。

打开浏览器访问http://localhost:8080/helloController

结果如下:

访问后,有可能会出现404、资源未公开等报错信息。

解决办法:

步骤1:点击右上角的Project Structure…

步骤2:点击Artifacts->WEB-INF->右键,新建一个lib目录。

步骤3:再进行如下操作。

提示: 完成以上步骤,记得点击Apply->OK。

再重新启动Tomcat,访问http://localhost:8080/helloController即可。

浏览器中显示出了模型对象中的字符串信息,就说明这个超级简单的Spring MVC程序执行成功。

总结

以上是我分享给大家的关于SpringMVC快速入门程序的一些总结。如果觉得还不错的话,就送我一个赞吧!如果本文对你有用的话,也欢迎收藏哦!

最后

欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!

阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了的更多相关文章

  1. 有关阿里云对SaaS行业的思考,看这一篇就够了

    过去二十年,随着改革开放的深化,以及中国的人口红利等因素,中国诞生了大批To C的高市值互联网巨头,2C的领域高速发展,而2B领域一直不温不火.近两年来,在C端流量饱和,B端数字化转型来临的背景下,中 ...

  2. 转载:Docker入门只需看这一篇就够了

    最近项目中需要用到 Docker 打包,于是上网查找资料学习了 Docker 的基本命令,记录一下自己遇到的一些错误. 准备开始自己写,结果看到了阮一峰老师的文章,瞬间就没有写下去的动力了,转载大佬的 ...

  3. 超清晰的 DNS 原理入门指南,看这一篇就够了~

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! DNS 是互联网核心协议之一.不管是上网浏览,还是编程开 ...

  4. [还不会搭建博客吗?]centos7系统部署hexo博客新手入门-进阶,看这一篇就够了

    @ 目录 *本文说明 请大家务必查看 前言 首先介绍一下主角:Hexo 什么是 Hexo? 环境准备 详细版 入门:搭建步骤 安装git: 安装node: 安装Hexo: 进阶:hexo基本操作 发布 ...

  5. Spring入门看这一篇就够了

    前言 前面已经学习了Struts2和Hibernate框架了.接下来学习的是Spring框架...本博文主要是引入Spring框架... Spring介绍 Spring诞生: 创建Spring的目的就 ...

  6. Spring Cloud入门看这一篇就够了

    目录 SpringCloud微服务 架构演进 服务调用方式: Euraka服务注册中心 注册中心 服务提供者(服务注册) 服务消费者(服务发现) 服务续约 失效剔除和自我保护 Consul 特性 Co ...

  7. JSON入门看这一篇就够了

    什么是JSON JSON:JavaScript Object Notation [JavaScript 对象表示法] JSON 是存储和交换文本信息的语法.类似 XML. JSON采用完全独立于任何程 ...

  8. Mybatis入门看这一篇就够了

    什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  9. Git让你从入门到精通,看这一篇就够了!

    简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...

随机推荐

  1. Baolu CSV Data Set Config

    1.背景 大家在平常使用JMeter测试工具时,对CSV Data Set Config 配置元件肯定不会陌生.如果我们的压测场景涉及到数据库更新操作(如:转账接接口)则需要对参数化数据进行分块,可就 ...

  2. Github上的沙雕项目,玩100遍都不够

    这段时间大家在家自我隔离.居家办公憋坏了吧.为了打发这种无聊的生活,我决定拿出我在github上珍藏多年的沙雕项目,让大家在无聊的时候可以打发时间. Github作为互联网上最大的开源社区,一直备受程 ...

  3. Java中的String到底占用多大的内存空间?你所了解的可能都是错误的!!

    写在前面 最近小伙伴加群时,我总是问一个问题:Java中的String类占用多大的内存空间?很多小伙伴的回答着实让我哭笑不得,有说不占空间的,有说1个字节的,有说2个字节的,有说3个字节的,有说不知道 ...

  4. RocketMQ主从搭建

    RocketMQ可分为以下几种模式: 单点模式 主从模式 双从模式 双主双从模式,多主多从模式 搭建主从模式 tar -zxvf rocketmq-4.6.0.tar.gz -C /usr/local ...

  5. 开发笔记:PDF生成文字和图片水印

    背景 团队手里在做的一个项目,其中一个小功能是用户需要上传PDF文件到文件服务器上,都是一些合同或者技术评估文档,鉴于知识版权和防伪的目的,需要在上传的PDF文件打上水印, 这时候我们需要提供能力给客 ...

  6. Volley获取json对象

    url必须返回一个json文本,由于网上没有找到返回json的url,我用Tomcat写了一个json文件, 在这个文件夹下见一个以json后缀的json文件,内容是json文本,然后输入浏览器输入h ...

  7. Google面试题(选自公众号)

    date: 2018-12-14 13:34:56 updated: 2018-12-14 13:34:56 Google面试题(选自公众号) 问题 把你的手机拨号页想象成一个棋盘.棋子走只能走&qu ...

  8. CNN作为denoiser的优势总结

    图像恢复的MAP推理公式: $\hat{x}\text{}=\text{}$arg min$_{x}\frac{1}{2}||\textbf{y}\text{}-\text{}\textbf{H}x| ...

  9. Spring Boot 加载application.properties顺序

    1.准备四份application.properties a.项目根目录下config/application.properties ,内容为:  test.user.name = a b.项目根目录 ...

  10. day81:luffy:课程分类页面&课程信息页面&指定分类显示课程信息&分页显示课程信息

    目录 1.构建课程前端初始页面 2.course后端的准备工作 3.后端实现课程分类列表接口 4.前端发送请求-获取课程分类信息 5.后端实现课程列表信息的接口 6.前端显示列表课程信息 7.按照指定 ...