在SpringMVC开发中用到了大量的注解,此文记录下常用的注解的意义和用途
@Controller
@Controller:创建后端控制器(处理器)对象,一般用于处理前端控制器的分发过来的请求
位置:此注解放在类的上面,表示创建此类的对象,对象放在springMVC的容器中
@RequestMapping
@RequestMapping:顾名思义,请求映射,一般用于将指定的请求URL交给指定的方法处理
位置:可以放在类上和方法上
属性:
1-value(表示请求的uri地址,唯一值,以 / 开头)
2-method(表示指定的请求方式,比如GET请求,POST请求等)
示例:
@RequestParam
在学习此注解前我学习MVC的知识时接收参数都是在方法形参里起名字,起的名字都和前端页面传来的参数名一样
比如一个表单如下
参数分别为name和pwd
那么我后端接收请求参数时都是在形参里写funcation(String name,String pwd)…来接收 ,SpringMVC会自动赋值形参为前端传的值,这种方法不是很好,总是有点限制(要求形参名和请求中的参数名相同)
提示:上面这种方法接收参数时,框架是可以自动进行类型的转换的,比如前端传个12.22,后端可以使用float、double接收(框架帮你转换类型赋值)。
那么可不可以前端传值,后端接收参数的时候不使用一样的名字呢?使用@RequestParam可以实现!
例如
后端接收时形参这样写
知识点:使用对象接收参数
除了上面写到的两个接收参数的方法以外,还可以使用对象来接收参数
要点:前端参数名需要和对象属性名一致,并且对象需要实现无参构造和属性的set方法
框架的处理流程:框架会调用对象的无参构造生成实例,然后调用对象的set方法将同名的参数值设置进去
示例:
后端接收参数:
User类(部分截图,是一个标准的JavaBean)
@ResponseBody注解
@ResponseBody注解的作用是将后端控制器的方法返回的对象(通常此对象已经被消息转换器转为json或字符串数据)写入到response对象的body中
例如
上图中的方法就使用到了@ResponseBody注解,上图的方法的执行流程为:
- 接收到参数后先在控制台打印出参数
- 然后重新设置对象的username和password,并将其存入List集合中
- 当执行return lists时,由于此方法的返回类型为List集合,所以MVC框架先将集合对象使用自带的转换器转为json格式的数据(消息转换器需要在mvc的配置文件中配置<mvc:annotation-driven />)
- 最后该@ResponseBody出场,此注解表示将转换后的json数据存入response对象中,直接响应