1、列举SpringMVC的常用注解及作用 2、SpringMVC 的流程 3、@RestController 和 @Controller的区别 4、如何解决 POST 请求和 GET 请求中文乱码问

1、列举SpringMVC的常用注解及作用

@Controller

       该注解用于标记在一个类上,使用它标记的类就是一个SpringMVC的Controller对象。用于分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。@Controller 注解只是定义了一个控制器类,而使用 @RequstMapping 注解的方法才是真正处理请求的处理器。

@RequestMapping

       该注解是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有方法的请求都是以该地址作为父路径的。

@Resource 和 @Autowired

       这两个注解都是做 bean 的注入时使用的,实际上 @Resource 并不是 Spring 的注解,它的包是 javax.annontation.Resource,需要导入;但是Spring支持该注解的注入。

@PathVariable

       该注解用于将请求 URL 中的模板变量映射到功能处理方法的参数上,即取出 url 模板中的变量作为参数。

@CookieValue

       该注解用于获取Cookie 中的值;该注解有以下属性:value:参数名称;required:是否必须;defaultValue:默认值。

@RequestParam

       该注解用于将请求参数区的数据映射到功能处理方法的参数上。

@ResponseBody

       该注解用于将 Controller 的方法返回的对象通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的 body 数据区。使用在,返回的数据不是 html 标签的页面,而是某种格式的数据,例如 json、xml 等。

@RequestBody

       该注解用于获取请求体的内容

2、SpringMVC 的流程

1.客户端请求提交到DispatcherServlet
2.DispatcherServlet接收到请求后、将提交的信息交给处理器映射器(HandlerMapping)
3.HandlerMapping根据用户的url请求、匹配该url的Handler(Controller),并返回一个执行链
4.DispatcherServlet调用HandlerAdapter(处理器适配器)
5.HandlerAdapter经过适配调用具体的处理器(Controller)扫描
6.Controller扫描完成后返回一个ModelAndView
7.HandlerAdapter将Controller扫描结果(ModelAndView)返回给DispatcherServlet
8.DispatcherServlet将ModelAndView请求试图解析器(ViewReslover)进行解析
9.ViewReslover解析后返回具体的View给前端控制器DispatcherServlet
10.DispatcherServlet将view进行渲染试图(即将模型数据填充到视图中)
11.DispatcherServlet将页面响应给个用户
 

3、@RestController 和 @Controller的区别

区别:

  • @Controller标识是一个Spring类是Spring MVC controller处理器。
  • @RestConroller是@Controller+ @ResponseBody的结合直接添加在类的上面,表示返回一个String类型的对象

4、如何解决 POST 请求和 GET 请求中文乱码问题

解决post请求乱码问题:

Servlet中调用request.getParameter()方法,执行下面代码

1、解决post中文乱码,将tomcat解析HTTP协议body体编码设置为UTF-8

2、request.setCharacterEncoding("UTF-8");

3、response.setCharacterEncoding("UTF-8");

解决get请求乱码问题:

GET提交时,参数是采用HTTP协议head传递,因此request.setCharacterEncoding()对get无效。需要手动编码转换。

1、String name = request.getParameter("name");
2、//将name采用UTF-8转码
3、name = new String(name,getBytes("ISO-8859-1"),"UTF-8");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南孚程序员

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值