@RequestMapping 、@PathVariable 和@ResponseBody、 @RequestParam注解总结

前言:

最近接触后端,先了解一下注解是什么东西。

内容:


一、Java注解

官方:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。


二、三种注解的用法总结

1、@RequestMapping

@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法,此处需注意@RequestMapping用在类上可以没用,但是用在方法上必须有

前端代码:

url = 'exam-web/examManager/selectExamByCourseId/' + this.courseId;

后端代码:

@RequestMapping("/examManager")/*父路径*/
@Controller
public class ExamManagerController {
    @ResponseBody
    @RequestMapping(value = "/selectExamByCourseId/{courseId}", method = RequestMethod.GET) /*子路径*/

    public ItooResult selectExamByCourseId(@PathVariable String courseId) {


}

子路径里面有一个{courseId},这个是可变参数,而@PathVariable 注解,其用来获取请求路径(url )中的动态参数。

2、@ResponseBody

@Responsebody注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。  

1)该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上; 

2)再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

3)request的body部分的数据编码格式由header部分的Content-Type指定;

4)返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;


3、@RequestParam

该注解是SpringMvc上使用的,用于后台获取数据使用。有两种方式:

1)request.getParameter("参数名")

2)用@RequestParam注解获取

有三个参数:

value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;

defaultValue:默认值,表示如果请求中没有同名参数时的默认值。

public String queryUserName(@RequestParam(value="userName" ,required =false ) String userName)

required=false 不是必须的  ,这句代码表示:请求中可以没有名字为username的参数,如果没有默认为null。



猜你喜欢

转载自blog.csdn.net/tgbyn/article/details/80793767