SpringMVC小记(1)

82 阅读2分钟

一.基础

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工作流程

  1. 请求到前端控制器(DispatcherServlet)
  2. 前端控制器调用handlerMapping,请求Handler
  3. handlerMapping根据url,找到处理器,处理器对象以及拦截器,一起返回给DispatcherServlet
  4. Dispatcherservlet找到handlerAdapter 去执行handler,把MOdelAndView返回给DispatcherServlet
  5. DispatcherServlet把DispatcherServlet传给ViewResolver进行解析,把View返回
  6. 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