一,什么是Spring Web MVC
先看一下官网怎么说:
也就是Spring Web MVC一开始就是包含在Spring框架里面的,但通常叫做Spring MVC。
也可以总结出一个信息,这是一个Web框架。后面我就简称为Spring MVC了。
1.1MVC
MVC也就是Model View Controller的缩写,是一个软件架构模式。主要分为模型,视图,控制器三个基础部分。
1.2 Spring MVC
根据上面的来说,Spring MVC也就是一个实现了MVC模式的Web框架。
在之前我们一开始创建的时候选择的Spring Web也就是这个Web框架。
这里也可以说明Spring Boot也是Spring MVC创建项目的一种方式罢了
二,Spring MVC 使用方法
2.1Spring MVC如何进行交互
交互这边主要分为三个方面:
建立连接:将用户和java程序连接起来,也就是访问一个地址能够调用到我们的Spring程序。
请求:用户请求会带一些参数,在程序中要想办法获取到参数,这个请求也就是指获取参数的功能。
响应:执行完逻辑之后,将结果返回给用户。
举个例子加强理解:
建立连接:去银行柜台
请求:拿着银行卡和身份证去存款
响应:银行给我一张存折,说我存好了。
2.2常用注解和注解解释
路由映射:@RequestMapping(最常用到的注解)
解释:当用户访问一个URL的时候,将用户的请求对应到程序某个类的某个方法的过程就叫做路由映射。
@RequestMapping可以修饰类,也可以修饰方法,访问地址就是类路径+方法路径,
还有一个常问的面试也就是@RequestMapping是GET请求还是POST请求,记住,它是两种都可以,看你是什么他都可以实现。
@RequestMapping("/user")
@RestController//返回数据
public class UserController {@RequestMapping("/sayHi")public String sayHi(){return "hello,Spring MVC";}//访问路径即为http://127.0.0.1:8080/user/sayHi
}
后端参数重命名:@RequestParam
这个注解也就是害怕前端传来的参数和后端接受的参数字段不同的时候。就比如前端name,后端是username,这样就会出现接受不到参数的情况。这时就可以使用这个注解来重命名参数值,来接收这个。
具体实现代码:在括号里面加上要修改的参数名就可以了
@RequestMapping("/m4")
public Object method_4(@RequestParam("name") String username) {return "接收到参数username:" + username;
}
但要注意,使用了这个注解之后,你的这个参数是必传参数,如果没有就会报错。
返回数据:@RequestBody
意思就是请求正文的数据绑定,请求参数必须写到正文中
代码实现:
@RequestMapping(value = "/m7")
public Object method7(@RequestBody Person person) {return person.toString();
}
获取URL参数:@PathVariable
这个注解主要作用就是在请求URL的数据绑定。
代码实现:
@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String usereturn "解析参数id:"+id+",name:"+userName;
}
上传文件:@RequestPart
也就是上传文件到指定路径
代码实现:
@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throws IOExceptio//获取⽂件名称 String fileName = file.getOriginalFilename();//⽂件上传到指定路径 file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));return "接收到⽂件名称为: "+fileName;
}
获取Cookie:@CookieValue
也就是获取令牌。
代码实现:
@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {return "bite:" + bite;
}
获取Session:@SessionAttribute
代码实现:
@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false) Strinreturn "username:"+username;
}
获取Header:@RequestHeader
代码实现:
@RequestMapping("/header")
public String header(@RequestHeader("User-Agent") String userAgent) {return "userAgent:"+userAgent;
}
前面使用的@RestController 其实是返回的数据。也是一个高频使用的注解,有他才能启动。
@RestController =@Controller +@ResponseBody
上面讲了ResponseBody,这里说一下@Controller:定义一个控制器,在项目启动时加载,将对象交给Spring管理。
三,总结
3.1常用注解总结:
@RequestMapping:路由映射
@RequestParam:后端参数重命名
@RequestBody:接收JSON类型的参数
@PathVariable:接收路径参数
@RequestPart:上传⽂件
@ResponseBody:返回数据
@CookieValue:从Cookie中获取值
@SessionAttribute:从Session中获取值
@RequestHeader:从Header中获取值
@Controller:定义⼀个控制器,Spring框架启动时加载,把这个对象交给Spring管理.默认返回视图.
@RestController:@ResponseBody+@Controller返回数据
3.2解释一下Cookie和Session
Cookie和Session都是会话机制,Cookie是客⼾端机制,Session是服务端机制。