Spring MVC笔记

1、什么是Spring MVC?

SpringMVC是Spring的一个模块,基于MVC的一个框架。

2、Spring MVC的优点?

(1)可以支持各种视图技术,而不仅仅局限于JSP;

(2)与Spring框架集成(如IoC容器、AOP等);

(3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。

(4) 支持各种请求资源的映射策略。

3、Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

继承了java本身的servlet,是servlet的增强。Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

Spring MVC代理了前端控制器,处理器映射器,视图解析器,这些东西都不需要程序员去考虑,因此让Java web的开发变得更为简单。

4、Spring MVC的工作流程(描述一下 DispatcherServlet 的工作流程)?

(1)用户发送请求至前端控制器DispatcherServlet;

(2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handler;

(3)处理器映射器根据请求url找到具体的处理器Handler,生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器,请求执行Handler;

(5)HandlerAdapter 经过适配调用 具体处理器进行处理业务逻辑;

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。在这里插入图片描述
其实就是
在这里插入图片描述

5、SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加"forward:"(什么都不写的话默认就是这个)

(2)重定向:在返回值前面加"redirect:"

6、SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?

是单例模式,在多线程访问的时候有线程安全问题,解决方案是在控制器里面不能写可变状态量,如果需要使用这些可变状态,可以使用ThreadLocal机制解决,为每个线程单独生成一份变量副本,独立操作,互不影响。

7、Spring MVC 常用注解?

SpringMVC常用注解(前后端分离)
1、@Controller :声明该类为SpringMVC中的Controller

2、@RestController:@Controller+@ResponseBody

3、@ResponseBody:支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)

4、@RequestMapping :用于映射Web请求,包括访问路径和参数(类或方法上)

@GetMapping(查)
@PostMapping(增)
@PutMapping(改)
@DeleteMapping(删)

5、@PathVariable:主要用来获取 URL 参数

6、@RequestParam:获取请求参数

@RequestParam 和 @PathVariable 的不同:
@PathValiable 是从 URL 模板中获取参数值, 即这种风格的 URL:{id}
@RequestParam 是从 Request 里获取参数值,即这种风格的 URL:?id=1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PerCheung

觉得有帮助的话就打赏支持一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值