细说SpringBoot多种场景传参模式

每日一句


一切美好的事物都是曲折地接近自己的目标,一切笔直都是骗人的,所有真理都是弯曲的,时间本身就是一个圆圈。by尼采


web技术

我们知道常见的web技术也就是网站开发,分为静态网站,和动态网站,动态网站技术常见的有三种,分别是 jsp Java webasp c# web,php web但是它们对应请求request,响应response 都是一样的我们用java web开发动态网站用的mvc框架就是,Springmvc,当然我们现在用的是SpringBoot 它只是对spirng全家桶的一个整合框架,他本质不是一个新的框架,内部还是spirng+springmvc是对多个框架的整合

多种传参方式

传统参数传递

我们知道controller方法中会帮我注入HttpServletRequest对象,我们可以通过request.getParameter("参数名")来直接获取参数,

@RequestMapping("/test01")
public ModelAndView test01(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");

System.out.println(username);
System.out.println(password);
return null;
}

简单类型参数映射

  1. 如果请求参数和Controller方法的形参同名,可以直接接收

  2. 如果请求参数和Controller方法的形参不同名,可以使用@RequestParam注解贴在形参前,设置对应的参数名称


注意这里只能是基本数据类型比如string,int,long,boolean等类型

@RequestMapping("/test02_1")
public ModelAndView test02_1(String username,String password){
System.out.println(username);
System.out.println(password);
return null;
}
@RequestMapping("/test02_2")
public ModelAndView test02_2(@RequestParam("username") String name,@RequestParam(value = "password",defaultValue = "1234987") String pwd){
//使用了@RequestParam的参数不能传空值
// required:表示是否必须要传值
// defaultValue:当没有该请求参数时,SpringMVC给请求参数的默认值
System.out.println(name);
System.out.println(pwd);
return null;
}

复杂对象映射

当然在实际项目中,我们会有很多个参数,一般超过两个参数我们就要封装成对象,通过对象传参数,不然这么一个一个写会麻烦,代码冗余,不美观,不能复用

此时能够自动把参数封装到形参的对象属性上:

  1. 请求参数必须和对象的属性同名
  2. 此时对象会直接放入request作用域中,名称为类型首字母小写
  3. @ModelAttribute设置请求参数绑定到对象中并传到视图页面的key值
@RequestMapping("/test03")
public ModelAndView test03(@ModelAttribute("stu") Student student){
/*可以使用对象作为方法的形参,同时接受接受前台的多个请求参数
SpringMVC会基于同名匹配,将请求参数的值注入对应的对象中的属性中
@ModelAttribute起名字key值*/

System.out.println(student);
ModelAndView mv = new ModelAndView();
mv.setViewName("test2");
return mv;
}

如果需要body里面json传参数需要在形参前面加上@RequestBody 会自动完成映射

 @PostMapping("/register")
public Result bodyParams(@RequestBody Users users) {
return ResultResponse.success(users);
}

数组和集合类型参数

当前台页面传来的参数是参数名相同,参数值不同的多个参数时,可以直接封装到方法的数组类型的形参中

比如批量删除时传来的参数

    /*对于参数名相同的多个请求参数,可以直接使用数组作为方法的形参接收
可以使用对象中的集合属性接收*/

@DeleteMapping("/del")
public Result listParams(String[] ids) {
return ResultResponse.success(ids);
}
细说SpringBoot多种场景传参模式

Restful风格传参

Restful是一种软件架构风格,严格上说是一种编码风格,其充分利用 HTTP 协议本身语义从而提供了一组设计原则和约束条件。

主要用于客户端和服务器交互类的软件,该风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。在后台,RequestMapping标签后,可以用{参数名}方式传参,同时需要在形参前加注解@PathVarible

@RequestMapping("/delete/{id}")
public ModelAndView test4(@PathVariable("id")Long id){
System.out.println("delete");
System.out.println(id);
return null;
}

细说SpringBoot多种场景传参模式

细说SpringBoot多种场景传参模式


原文始发于微信公众号(猿小叔):细说SpringBoot多种场景传参模式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/28029.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!