SpringMVC

SpringMVC组件

1.DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于 mvc 模式中的c,DispatcherServlet 是整个流程控制的中心,相当于是 SpringMVC 的大脑,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
​
2.HandlerMapping:处理器映射器
HandlerMapping 负责根据用户请求找到 Handler 即处理器(也就是我们所说的 Controller),SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等,在实际开发中,我们常用的方式是注解方式。
​
3.Handler:处理器
这里所说的 Handler 就是指我们的 Controller
​
4.HandlAdapter:处理器适配器
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
​
​
5.ViewResolver:视图解析器
ViewResolver 负责将处理结果生成 View 视图。

1, 用户发送请求至前端控制器DispatcherServlet
2, DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3, 返回处理器执行链HandlerExecutionChain。
4, DispatcherServlet通过HandlerAdapter处理器适配器调用合适的处理器
5, 执行处理器handler
6, handler执行完成返回ModelAndView(数据及视图)
7, HandlerAdapter将果ModelAndView返回给DispatcherServlet
8, DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9, ViewReslover解析后返回具体View对象
10, DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11, DispatcherServlet响应用户

get请求与post请求有什么区别?

  • GET请求在URL中传送的参数是有长度限制的,而POST没有。

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

  • GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

  • GET参数通过URL传递,POST放在Request body中。

  • 客户端发送json必须是post,content-type application/json 服务端示用requestbodu注解

5.8 请求数据出现乱码该怎么处理?

  1. 修改服务器的配置文件,显示声明请求路径的编码与服务器一致,这种方式只对GET请求有效。

Spring MVC的拦截器

拦截器处于dispatcherservlet与controller中间,拦截器需要实现handlerinterceptor,接口包含三个方法:prehandle()方法执行之前,会返回一个布尔值,false结束所有流程,true执行下一步,posthandle方法执行之后,aftercompletion方法执行完,放入ioc容器

注解加在类上面:

```
@Controller(spring注解)
@RestController
@ResponseBody
@RequestMapping
@CrossOrigin
```

注解加在方法上面

```
@RequestMapping("/hello")
@RequestMapping(path = "/hello",method = {RequestMethod.GET},params = {"age"})
method:指定请求方式,如果请求方式不匹配,报405错误
params:指定请求必要参数,如果不满足必要参数,报400


@GetMapping
@GetMapping(path = "/hello",params = {"age"}) 
//等价于@RequestMapping(path = "/hello",method = {RequestMethod.GET},params = {"age"})

@PostMapping
@PostMapping(path = "/hello",params = {"age"}) 
//等价于@RequestMapping(path = "/hello",method = {RequestMethod.POST},params = {"age"})

@ResponseBody
```

注解加在形参上面

```java
@RequestParam (接收请求参数)
eg: @RequestParam(value = "name1",required = true,defaultValue = "rose") String name
当参数名和方法的形参名一致时,这个注解可以省略不写
当参数名和方法的形参名不一致,必须使用该注解,指定参数名 
注解属性:
    required:表示必传参数,默认值是true
    defaultValue:当没有传值,可以使用默认值。
    
@PathVariable
@RequestBody
@RequestHeader
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值