一.基础
1.1 什么是mvc(model-view-controller)
基于java实现的mvc设计模式的请求驱动类型的轻量级web框架,通过模型,视图,和控制器分离,将web进行解耦。
1.2 MVC优点
1. 支持各种视图,不局限于jsp
2. 与spring框架集成(ioc,aop)
3. 清晰的角色分配:
前端控制器(DispatcherServlet):
接收请求,响应结果,相当于转发器,减少组件间耦合度
用来处理http请求和响应
处理器映射器(handlerMapping):
根据请求url查找handler
处理器适配器(HandlerAdapter):
编写Handler的时候要按照HandlerAdapter的规则去写
处理器 (handler):
需要编写
视图解析器(ViewResolver):
视图的代码解析成view
视图 (view):
是一个接口
4. 支持各种请求资源的映射策略
MVC主要组件
1.3 MVC工作流程
- 请求到前端控制器(DispatcherServlet)
- 前端控制器调用handlerMapping,请求Handler
- handlerMapping根据url,找到处理器,处理器对象以及拦截器,一起返回给DispatcherServlet
- Dispatcherservlet找到handlerAdapter 去执行handler,把MOdelAndView返回给DispatcherServlet
- DispatcherServlet把DispatcherServlet传给ViewResolver进行解析,把View返回
- DispatcherServlet渲染视图,响应给用户
1.4 常用注解
1.4.1 注解原理
1.4.2哪些常用注解
1.Controller和RestController
控制器的注解,
RestController=ResponseBody+Controller
Controller:声明该类是controller层的bean,给spring管理
2.Responsebody(响应):响应的时候,将对象转换为json格式
3.Requestbody(请求):接收请求的json数据,将json转为java对象
4.RequestMapping(getMapping,postMapping,putMapping,DeleteMapping)窄化请求
5.RequestParam(使前端请求参数和后端方法参数一致)
6.PathVariable() restful风格的请求参数的注解
二.各种问题
1.@RequestParam和@Param的区别
@RequestParam是SpringMVC中的一个常用注解,这个注解通常用在Controller层使用。
标注在Controller层方法的参数上,用来解决前端与后端参数不一致的问题。
属性:
value:将请求参数绑定到你控制器的方法参数上
required:是否必须传输请求参数
defaultValue:为形参设置默认值
@Param是Mybatis中的一个常用注解,常用于dao层的方法参数上,
用来简化xml配置的时候,给参数命名,
参数命名后就可以通过 #{xxx} 的形式注入sql语句中。
@Param注解是为了dao接口的方法参数和配置文件sql语句的参数保持变量名的一致性。
2.@RequestParam和@PathVariable的区别
两者都用于接收请求参数
RequestPara
http://localhost:8887/test2?id=id2&name=name2
@GetMapping("/findAll")
public HashMap<Object, Object> findAll( Integer page, Integer limit)
PathVariable
http://localhost:8887/test1/id1/name1