Spring MVC

65 阅读2分钟

基础

什么是Spring MVC?

Spring MVC的工作流程是怎样的?

image.png

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理器适配器。
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户。

注解

SpringMVC常用的注解有哪些?

  • @RequestMapping:用于处理请求url映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
  • @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
  • @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
  • @Conntroller:控制器的注解,表示是表现层,不能用用别的注解代替。

SpingMVC中的控制器的注解一般用哪个,有没有别的注解可以替代?

一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody+@Controller,表示是表现层,除此之外,一般不用别的注解代替。

怎么样把ModelMap里面的数据放入Session里面?

可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key。

安全

幂等性

什么是幂等性?

在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。

如何保证幂等性?

数据库唯一主键

image.png

如果插入成功则表示没有重复调用接口。如果抛出主键重复异常,则表示数据库中已经存在该条记录,返回错误信息到客户端。

SnowFlake算法,是Twitter开源的分布式id生成算法。其核心思想就是:使用一个64bit的long型数字作为全局唯一id。在分布式系统中的应用十分广泛,且ID引入了时间戳,基本上保持自增的。

这64个bit中,其中1个bit是不用的,然后用其中的41bit作为毫秒数,用10bit作为工作机器id,12bit作为序列号。

数据库乐观锁

image.png

请求序列号

image.png

防重Token令牌

image.png

四种方式区别

image.png