Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring
MVC"
1.MVC
MVC是Model View Controller的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分
为模型、视图和控制器三个基本部分

其中:
View:用于界面显示,进行人机交互,展示数据
Controller:分配资源的分用器,用于处理判断视图传来的请求应该用哪个模型解决,以及处理后的响应应该发给哪个视图
Model:是应用程序的主体部分,⽤来处理程序中数据逻辑的部分
用生活中的例子说:
View:服务员,用于与客户顾客交互的角色
Controller:前台,处理服务员从顾客那里拿来的菜单应该给哪个厨师
Model:厨师,真正做菜的角色
2.Spring MVC
那么Spring实现MVC后有什么改变呢?下图可能展示的更准确
既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求, 并给予响应。
主要分以下三个⽅⾯:
1. 建⽴连接:将用户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
2. 请求: 用户请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.
3. 响应: 执行了业务逻辑之后,要把程序执行的结果返回给用户, 也就是响应
2.1建立连接
在 Spring MVC 中使⽤ @RequestMapping 来实现 URL 路由映射 ,也就是浏览器连接程序的作⽤
创建一个HelloController程序,实现用户通过浏览器和程序的交互
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {@RequestMapping("/Hello")public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}}
启动程序后,接下来在浏览器访问: http://127.0.0.1:8080/Hello, 就可以看到程序返回的数据了
2.1.1@RequestMapping作用
@RequestMapping用与注册接⼝的路由映射的
表示当路径/Hello接收到请求时,就会调用hello()方法
路由映射:当用户输入url访问服务时,将用户请求定位再某个类的某个方法的过程就是路由映射
既然 @RequestMapping 已经可以达到我们的⽬的了, 我们为什么还要加 @RestController呢?
我们把 @RestController 去掉, 再来访问⼀次
程序报了404错误,显示找不到界面
Spring会对所有的类进⾏扫描, 如果类加了注解@RestController, Spring才会去看这个类⾥⾯的⽅法有没有加 @RequestMapping 这个注解
2.1.2@RequestMapping使用
@RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.
@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息
@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {@RequestMapping("/Hello")public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}
}
访问地址:127.0.0.1:8080/r1/Hello
2.1.3@RequestMapping是Get请求还是Post请求
我们通过创造from表单构建请求
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/r1/Hello" method="post"><input type="submit" value="提交"></form>
</body>
</html>
放在static包中
访问⽅式为:http://127.0.0.1:8080/test.htm
如果有多层目录,访问链接从static目录开始
如上图, 访问链接为: http://127.0.0.1:8080/html/test.html
点击提交后跳转到 :http://127.0.0.1:8080/r1/Hello
可以通过@RequestMapping指定GET/POST⽅法类型
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {@RequestMapping(value = "/Hello",method = RequestMethod.POST)public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}
}