阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了
前言
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入门到进阶,看这一篇就够了的更多相关文章
- 有关阿里云对SaaS行业的思考,看这一篇就够了
过去二十年,随着改革开放的深化,以及中国的人口红利等因素,中国诞生了大批To C的高市值互联网巨头,2C的领域高速发展,而2B领域一直不温不火.近两年来,在C端流量饱和,B端数字化转型来临的背景下,中 ...
- 转载:Docker入门只需看这一篇就够了
最近项目中需要用到 Docker 打包,于是上网查找资料学习了 Docker 的基本命令,记录一下自己遇到的一些错误. 准备开始自己写,结果看到了阮一峰老师的文章,瞬间就没有写下去的动力了,转载大佬的 ...
- 超清晰的 DNS 原理入门指南,看这一篇就够了~
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! DNS 是互联网核心协议之一.不管是上网浏览,还是编程开 ...
- [还不会搭建博客吗?]centos7系统部署hexo博客新手入门-进阶,看这一篇就够了
@ 目录 *本文说明 请大家务必查看 前言 首先介绍一下主角:Hexo 什么是 Hexo? 环境准备 详细版 入门:搭建步骤 安装git: 安装node: 安装Hexo: 进阶:hexo基本操作 发布 ...
- Spring入门看这一篇就够了
前言 前面已经学习了Struts2和Hibernate框架了.接下来学习的是Spring框架...本博文主要是引入Spring框架... Spring介绍 Spring诞生: 创建Spring的目的就 ...
- Spring Cloud入门看这一篇就够了
目录 SpringCloud微服务 架构演进 服务调用方式: Euraka服务注册中心 注册中心 服务提供者(服务注册) 服务消费者(服务发现) 服务续约 失效剔除和自我保护 Consul 特性 Co ...
- JSON入门看这一篇就够了
什么是JSON JSON:JavaScript Object Notation [JavaScript 对象表示法] JSON 是存储和交换文本信息的语法.类似 XML. JSON采用完全独立于任何程 ...
- Mybatis入门看这一篇就够了
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- Git让你从入门到精通,看这一篇就够了!
简介 Git 是什么? Git 是一个开源的分布式版本控制系统. 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 什么是分布式版本控制系统? 介绍分布 ...
随机推荐
- CUDA和cuDNN的安装
CUDA软件 Windows 打开NVIDIA CUDA网站,选择需要下载的版本,依次选择Windows平台,x86_64架构,10系统,exe(local)本地安装包,再选择Download即可下载 ...
- Mybatis---00Mybatis入门
一.什么是Mybatis Mybatis框架是一个半ORM框架.Mybatis是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去 ...
- 配置域名与Https
前言 在之前的内容里,我们已经实现了部署SpringBoot项目到云服务器,但是当时用的是直接通过ip+端口的方式访问的,在之后如果是想对接上自己开发的小程序的话,必须要https的地址才行,因此今天 ...
- 常用数据结构-namedtuple(命名元祖)
namedtuple从根本上来说是一个带有数据名称的元祖.它包含元祖的所有特性,但也有一些元祖没有的额外特性.使用namedtuple可以很容易创建轻量级对象类型. namedtuple将是你的代码更 ...
- Photoshop CC 习惯设置
安装后,一般设置: 1.编辑--首选项--常规 2.一般更改内容为: 性能 内存使用情况在50%-80%之间 暂存盘:除去C盘意外的其他盘 单位和标尺:以px为单位 其他根据喜好设定!
- vim-配置教程+源码
目录 概念 前言 参考链接 vim 优点 vim 配置 vim 配置方法一 vim 配置方法二 自动添加文件头 一般设置 插件 ** 映射 YouCompleteMe 插件 其它配置 概念 前言 放弃 ...
- react中iconfont字体图标不显示问题
如下图, 写四个圆圈,直接将iconfont的字体编码写在静态HTML结构中时显示没问题,然而明显这样的结构用循环写是更好的选择, 但是,页面上不能显示字体图片了,而是直接显示字体编码 原因是字体编码 ...
- solr全文检索学习
序言: 前面我们说了全局检索Lucene,但是我们发现Lucene在使用上还是有些不方便的,例如想要看索引的内容时,就必须自己调api去查,再例如一些添加文档,需要写的代码还是比较多的 另外我们之前说 ...
- 14Flask重要知识
一,李辉<Flask Web开发实战> 1,内网穿透 内网穿透工具可以快速让flask项目运行: 1,https://localtunnel.github.io/www/ 2,https: ...
- Mac环境MySql初始密码设置
1. 首先 点击系统偏好设置 -> 点击MySQL, 在弹出的页面中,关闭服务.2. 进入终端命令输出: cd /usr/local/mysql/bin/ 命令,回车.3. 回车后,输入命令:s ...