1.MVC概念
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO,工程中的JavaBean。
View(视图) - 视图代表模型包含的数据的可视化。
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
2.SpringMVC
2.1 相关概念
1.Spring MVC是Spring Framework提供的Web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。
2.SpringMVC是一种基于MVC设计模式的Java Web框架,其主要目的是为了简化Web应用程序的开发过程。它提供了一组组件,如控制器、视图解析器、拦截器等,使得开发人员可以更加轻松地组织和管理Web应用程序的代码。其核心思想是将请求和响应分离,使得开发人员可以将业务逻辑和展示逻辑分离开来,从而提高代码的可维护性和可重用性。
2.2 BS架构
BS架构是指Browser/Server架构,也就是浏览器/服务器架构。它是一种网络架构模式,将应用程序分为客户端和服务器端两个部分。客户端指的是用户使用的浏览器,而服务器端则是应用程序的后台处理部分。在BS架构中,客户端负责展示用户界面和处理用户输入,服务器端负责处理客户端请求并返回相应的数据。这种架构的优点是客户端无需安装任何软件,只需要一个浏览器即可访问应用程序,同时服务器端可以集中管理和维护应用程序,提高了安全性和可靠性。
2.3 创建SpringMVC项目
1.使用IDEA创建SpringMVC项目
2.实现连接
注意:在Spring框架中,@RequestMapping注解默认的请求方式为GET。也就是说,如果没有指定请求方式,那么该方法将只处理GET请求。但是,@RequestMapping注解可以指定多种请求方式,例如:@RequestMapping(value="/test", method={RequestMethod.GET, RequestMethod.POST}),表示该方法可以处理GET和POST请求。
注意:浏览器默认发送GET请求
三种方法实现连接:
@RestController
public class UserController {
@RequestMapping(value = "/sayhi",method = RequestMethod.POST)
//可以为一级路由,也可以为多级路由
//支持get和post请求方法
public String syahi(){
return "hi spring mvc";
}
@PostMapping("/sayhello")//只支持post请求方法
public String sayHello(){
return "hi spring sayHello";
@GetMapping("/sayhi") //只支持get请求方法
public String say(){
return "hi get hello";
}
}
}
使用postman模拟POST请求;
3.获取方法
3.1 获取单个的参数
@RequestMapping(value = "/sayhi") //可以为一级路由,也可以为多级路由
public String syahi(String name){
return "hi "+name;
}
参数传递,不要使用基础类型,因为基础类型会报错。
使用包装类型传参不会出现错误:
2.获取多个参数
3. 获取对象:
框架会实现自动的参数映射
@RequestMapping("/reg")
public Object reg(Userinfo userinfo){
System.out.println(userinfo);
return userinfo;
}
重命名前端的传递参数名称:前端传递username
前端传递一般为对象或者json格式的字符串对象
后端获取的时候:对象/json对象格式的字符串对象
重命名功能:
//重命名功能
@RequestMapping("/reg2")
public Object reg(@RequestParam("username",required = false) String name,String password){
return name+":"+password;
}
4.获取JSON对象
加上@RequestBody注解
@RequestMapping("/reg3")
public Object reg3(@RequestBody Userinfo userinfo){
return userinfo;
}
5.从基础URL中获取参数(不是从URL的参数部分获取参数)
path(url) = /user/123456
优点1:搜索引擎抓取关键字权重更高
优点2:url更简洁
/**
* 获取URL参数
* @param name
* @param password
* @return
*/
@RequestMapping("/reg4/{name}/{password}")
public Object reg4(@PathVariable String name,@PathVariable String password){
return "name->"+name+" | password->"+password;
}
重命名:
/**
* 获取URL参数
* @param name
* @param password
* @return
*/
@RequestMapping("/reg4/{name}/{password}")
public Object reg4(@PathVariable String name,@PathVariable(required=false,
name="pwd") String password){
return "name->"+name+" | password->"+password;
}
@PathVariable ->基础URL里面的参数(? 之前的参数)
@RequestParm ->URL参数部分的参数( ? 之后的参数)
6.获取上传文件@RequestPart
/**
* 获取上传文件
* @param file
* @return
*/
@RequestMapping("/myupload")
public Object upload(@RequestPart("myimg")MultipartFile file) {
File saveFile = new File("D:\\桌面\\CsdnImg\\myimg.png");
try {
file.transferTo(saveFile);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
Postman构建:
注意:文件上传的大小默认限制为1MB;重新设置上传大小限制:
srping.servlet.multipart.max-file-size=100MB
srping.servlet.multipart.max-request-size=100MB
文件上传不重复:
/**
* 获取上传文件
* @param file
* @return
*/
@RequestMapping("/myupload")
public Object upload(@RequestPart("myimg")MultipartFile file) {
String fileName = UUID.randomUUID()+
file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
File saveFile = new File("D:\\桌面\\CsdnImg\\"+fileName);
try {
file.transferTo(saveFile);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}