admin管理员组文章数量:1794759
Spring与SpringBoot常用注解
文章目录
- 常用注解
- 1.RequestMapping注解:建立请求URL和处理方法之间的对应关系
- 2.RequestParam注解:把请求中的指定名称的参数传递给控制器中的形参赋值
- 3.RequestBody注解:获取请求体的内容,参数拼接成一个字符串
- ResponseBody:返回Json数据
- Controller:返回视图View
- 4.PathVariable注解:绑定url中的占位符
- 5.RequestHeader注解:获取指定请求头的值
- 6.CookieValue注解:获取指定cookie的名称的值
- 7.SessionAttributes注解:用于多次执行控制器方法间的参数共享(全局Session设置)
- ①Model(模型信)的使用
- ②SessionAttributes注解
- 8.ModelAttribute注解:用于初始化相关属性数据
- ①作用在方法上,初始化相关属性
- ②作用在参数上,初始化相关属性
回顾:SpringMVC快速入门,搭建SpringMVC开发环境
常用注解 1.RequestMapping注解:建立请求URL和处理方法之间的对应关系
回顾:RequestMapping注解详解
2.RequestParam注解:把请求中的指定名称的参数传递给控制器中的形参赋值 @Controller @RequestMapping(value ="/param") public class RequestParamController { /* 属性 value:请求参数中的名称 required:请求参数中是否必须提供此参数。不写默认是true,必须提供该请求参数,否则404 defaultValue:默认值 */ @RequestMapping(value ="/test") public String add(@RequestParam(value = "name",required = false,defaultValue = "无名氏") String name, @RequestParam(value = "age") Integer age){ System.out.println(name+" "+age); //localhost:8080/param/test?name=张三三&age=10 控制台输出: 张三三 10 //localhost:8080/param/test?name=张三三 控制台输出: HTTP Status 400 – Bad Request //localhost:8080/param/test?age=18 控制台输出: 无名氏 18 return "login"; } } 3.RequestBody注解:获取请求体的内容,参数拼接成一个字符串 @Controller @RequestMapping(value = "/body") public class RequestBodyController { /*接收前端传入的参数,并将参数拼接成一个字符串 注意:用于POST请求 属性 required:是否必须有请求体,默认值是true */ @RequestMapping(value = "/test") public String show(@RequestBody String body){ System.out.println(body); //name=%E5%91%A8%E5%93%88%E5%93%88&age=23&address=%E6%B1%9F%E8%A5%BF return "login"; } } ResponseBody:返回Json数据将Controller的方法返回的对象,通过转换器转换为指定的格式之后,写入到 Response 对象的 body 区,常用来返回 JSON 数据或 XML 数据 。 @RestController 这个注解,它就包含了 @ResponseBody 这个注解:@RestController=@ResponseBody+@Controller
在类上用@RestController,其内的所有方法都会默认加上@ResponseBody,也就是默认返回JSON格式。
如果某些方法不是返回JSON的,有的方法返回的是json,就只能在类上用@Controller返回view,然后在返回json的方法上加@ResponseBody。
Controller:返回视图View@Controller是最基本的控制层注解,继承了Spring的@Component注解,会把对应的类声明为Spring对应的Bean,并且可以被Web组件管理。使用@Controller注解返回的是view,而不是Json数据。
4.PathVariable注解:绑定url中的占位符 @Controller @RequestMapping(value = "/pathVariable") public class PathVariableController2 { /*@PathVariable:提供对RestFul风格的支持 Restful风格的URL:请求路径一样,可以根据不同的请求方式去执行后台的不同方法 可以通过 GET、 POST、 PUT、 PATCH、 DELETE 等方式对服务端的资源进行操作。其中,GET 用于查询资源,POST 用于创建资源, PUT 用于更新服务端的资源的全部信,PATCH 用于更新服务端的资源的部分信,DELETE 用于删除服务端的资源。 根据ID删除 请求: localhost:8080/pathVariable/1 localhost:8080/pathVariable/2 ...... ... */ @RequestMapping(value = {"/{id}"},method = RequestMethod.DELETE) public String delete(@PathVariable(value = "id")Integer id){ System.out.println("删除服务端的资源 id为"+id); return "login"; } //根据ID查询 @RequestMapping(value = {"/{id}"},method = RequestMethod.GET) public String getById(@PathVariable(value = "id")Integer id){ System.out.println("查询资源 id为"+id); return "login"; } }使用HTTP Client工具测试体现:请求路径一样,可以根据不同的请求方式执行后台的不同方法 DELETE 方式,执行delete方法 GET方式,执行getById方法
5.RequestHeader注解:获取指定请求头的值 /* 属性 value:请求头的名称 required:请求参数中是否必须提供此请求头。不写默认是true,必须提供有该请求头。 defaultValue:默认值 */ @Controller @RequestMapping(value ="/header") public class RequestHeaderController { @RequestMapping(path="/test") public String show(@RequestHeader(value="Host",required = true,defaultValue = "没有值") String header) { System.out.println(header); //请求 localhost:8080/header/test 控制台输出 localhost:8080 return "login"; } } 6.CookieValue注解:获取指定cookie的名称的值 @Controller @RequestMapping(value = "/cookie") public class CookieValueController { /* 属性 ·value:cookie的名称 required:请求参数中是否必须提供此cookie的名称。不写默认是true,必须提供有该cookie的名称。 defaultValue:默认值 */ @RequestMapping(value = "/test") public String show(@CookieValue(value = "JSESSIONID",required = false,defaultValue = "JSESSIONID没有值")String jsid){ System.out.println(jsid); //6598974983EC4013BFC5375337B6EBFC return "login"; } } 7.SessionAttributes注解:用于多次执行控制器方法间的参数共享(全局Session设置) ①Model(模型信)的使用- 作用:SpringMVC会把Model(模型信)中的的数据放入到request域对象中,页面可以通过EL表达式来取request域中的数据。
- 示例:后台使用Model的addAttribute方法,页面使用EL表达式取数据。
后台
@Controller @RequestMapping(value = "/model") public class ModelController { /* SpringMVC会把Model(模型信)中的的数据放入到request域对象中 后台使用Model的addAttribute方法添加信 前台页面使用EL表达式可取数据 */ @RequestMapping(value = "/test") public String getUser(Model model){ //添加name信,SpringMVC会把name存储到HttpServletRequest作用域中 model.addAttribute("name","周哈哈"); return "login"; } }前台 login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>你已入门啦</h3> <div> ${name} </div> </body> </html> ②SessionAttributes注解 @Controller @RequestMapping(value = "/session") /*@SessionAttributes:把数据存入到session域对象中 value = "name":表示将Request域中的name值获取并存入到Session中 types:将request中指定的数据类型存入到Session中 */ @SessionAttributes(value= {"username","password","age"},types= {Integer.class}) public class SessionAttributesController { //添加Session(向session中存入值) @RequestMapping(path="/save") public String save(Model model) { System.out.println("把数据存入到session域对象中"); model.addAttribute("username", "root"); model.addAttribute("password", "666"); model.addAttribute("age", 18); return "test"; } //后台查询Session(从session中获取值) @RequestMapping(path="/find") public String find(ModelMap modelMap) { String username = (String) modelMap.get("username"); String password = (String) modelMap.get("password"); Integer age = (Integer) modelMap.get("age"); System.out.println(username + " "+password +" "+age); return "test"; } //删除session @RequestMapping(path="/delete") public String delete(SessionStatus status) { status.setComplete(); System.out.println("已删除session"); return "test"; } }分别依次访问: localhost:8080/session/save localhost:8080/session/find localhost:8080/session/delete
控制台输出:
8.ModelAttribute注解:用于初始化相关属性数据 ①作用在方法上,初始化相关属性 @Controller @RequestMapping(value = "/modelattribute") public class ModelAttributeController { /** 作用在方法上,初始化相关参数(优先执行) 如下,先给user的level属性赋值,再返回到add方法的入参,绑定所提交表单的值。 */ @ModelAttribute public User initUser(){ System.out.println("ModelAttribute方法执行 初始化用户Level"); User user = new User(); user.setLevel(1); return user; } /* 增加用户 localhost:8080/modelattribute/add?name=张三三 此时的user的Level已经被赋值为1了 */ @RequestMapping(value = "/add") public String add(User user){ System.out.println("add方法执行"); System.out.println(user); return "login"; } }User
public class User { private String name; //等级 private Integer level; ..... ... }访问: localhost:8080/modelattribute/add?name=张三三 控制台输出:Level已被初始化为1
②作用在参数上,初始化相关属性 @Controller @RequestMapping(value = "/modelattribute") public class ModelAttributeController { //初始化数据 @ModelAttribute public void initUserInfo(Map<String,User> map){ System.out.println("ModelAttribute方法执行 初始化用户Level"); User user = new User(); user.setLevel(10); map.put("user",user); } // @ModelAttribute:作用在参数上 localhost:8080/modelattribute/param/add?name=张三三 @RequestMapping(value = "/param/add") public String addUser(@ModelAttribute("user")User user){ System.out.println("addUser方法执行"); System.out.println(user); return "login"; } }访问: localhost:8080/modelattribute/add?name=张三三 控制台输出:Level已被初始化为10
本文标签: 注解常用springSpringBoot
版权声明:本文标题: Spring与SpringBoot常用注解 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686808063a105499.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论