2.什么是Spring Web MVC
目录
1.什么是MVC
2.什么是 Web MVC
3.和MVC的关系
4.使用
4.1创建
4.2建立链接
4.3注解介绍
4.3.1@
4.3.2@
4.4获取参数
4.4.1获取单个参数
4.4.2传递参数
4.4.3传递对象
4.4.4后端参数映射
4.4.5传递数组
4.4.6传递集合
1.什么是MVC
MVC全称:Model View
View:程序中专门用来与浏览器进行交互,展示数据资源.
Model:程序的主体部分,用来处理程序中数据逻辑的部分.
:相当于一个分发器,用来连接视图和模型.
举个例子:我们去公司面试,HR会安排面试所需要用的会议室,根据候选人去通知不同的部门来安排面试,面试结束,由HR来通知结果.
HR就是View,接待与通知.
不同的部门就是,HR根据候选人来选择对应的部门进行面试.
面试官就是Model,处理面试的这个事情.
2.什么是 Web MVC
Web MVC是基于 API构建的原始框架,简称 MVC,即 Web MVC 是⼀个 Web 框架.
掌握 MVC就需要理解1.MVC,2.Web框架
在创建项目时,我们勾选的23选项 Web就是的框架~
不要懵~只是实现的其中一种方式而已~
用一张图来更好地诠释实现MVC:
3.和MVC的关系
MVC是一种思想,是MVC思想的一种具体实现.
即是实现了MVC思想,并继承了 API的web框架.
4.使用 4.1创建
首先在项目时,再添加依赖的时候,添加.
4.2建立链接
创建一个类,实现用户用过浏览器和程序之间的交互:
package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@RequestMapping("/sayHello")//方法名和路径名无需一致public String sayHello() {return "hello,SpringBoot";}
}
直接访问:
:8080/
就可以看到返回的数据了:
4.3注解介绍 4.3.1@
@:用来注册接口的路由映射的.
路由映射:当用户访问一个URL时,将用户的请求对应到程序中的某个类的某个方法时的过程
以上述代码为例:表示服务收到请求时,路径/的请求就会调用这个方法的代码
注意:
1.@的URL路径最前面加不加/(斜杠)都可以!但是在企业开发的角度来讲,统一要求:前加后不加~
@RestController
public class HelloController {@RequestMapping("sayHello")public String sayHello() {return "hello,SpringBoot";}
}
2.@注解中没有写属性名,默认是value;若要限制请求方式,就要使用属性~
只想支持某种方法的话,那就 = .方法
GET: = .GET;POST: = .POST
@RestController
public class HelloController {@RequestMapping(value = "/sayHello",method = RequestMethod.GET)public String sayHello() {return "hello,SpringBoot";}
}
3.@:即可以修饰类(请求初始信息),也可以修饰方法(请求具体信息);当修饰类和方法时,访问的地址是类路径 + 方法路径.以及@ 的URL路径也可以是多层路径, 最终访问时, 依然:类路径 + 方法路径
@RequestMapping("/Hi/MVC")
@RestController
public class HelloController {@RequestMapping("/sayHello")public String sayHello() {return "hello,SpringBoot";}
}
访问::8080/Hi/MVC/
4.3.2@
上述中,@已经满足了我们的访问要求,那为什么还要加@呢?
当我们把@删除后访问发现程序报错404,这个就是@的作用~
4.4获取参数 4.4.1获取单个参数
@RequestMapping("/param")
@RestController
public class ParamController {@RequestMapping("/m1")public String m1(String name) {return "接收到的参数name:" + name;}
}
:8080/param/m1?name=访问:8080/param/m1?name=
发现后端成功接收到了name参数的值,在赋值时一定要看好参数是否一致.
在使用基本类型来接受参数时,参数必传(除类型),否则会报500错误;当类型不匹配时,会报400错误.
4.4.2传递参数
正常传递
@RequestMapping("/m1/int")public Object method1GetInt(int age){return "接收到参数age:" + age;}
}
通过观察请求和响应,HTTP响应状态码为200,-Type为text/html
当不传递某个参数时:
通过观察请求和响应,HTTP响应状态码为500
HTTP响应状态码为500:服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这 个状态码.
那么该怎么解决呢?
打开你的IDEA,观察日志!从下往上看,按照报错的信息解决错误即可~
int类型的参数'age',虽然为可选的, 但由于被声明为基本类型⽽不能转换为空值. 考虑将其声明为对应基本类型的包装类型.
传递参数类型不匹配
通过观察请求和响应,HTTP响应状态码为400