(一)SpringMVC Controller接受参数的方式

(1) 前端传递的参数,在springMVC的controller中使用基本数据类型或者String 类型进行接受

在前端有一个form表单,需要传递姓名和年龄,在controller可以采用基本数据类型或者String进行接受,

  1. <form action="demo" method="post">
  2. 名字:<input type="text" name="name"/><br/>
  3. 年龄:<input type="text" name="age"/><br/>
  4. <input type="submit" value="提交"/><br/>
  5. </form>

此时值需要接受参数的名称和传递的参数名称一致就行

  1. fun01(String name,int age)
  1. @Controller
  2. public class DemoController {
  3.  
  4. @RequestMapping("/demo")
  5. public String fun01(String name,int age) {//字符串的返回值代表代表要跳转的页面
  6. System.out.println(name);
  7. System.out.println(age);
  8. System.out.println("指定了demo");
  9. //返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
  10. //相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
  11. //"demo/main.jsp"
  12. return "/main.jsp";
  13. }
  14. }

(2) 前端传递的参数,在springMVC的controller中使用  类类型进行接受(走get/set方法)

此时需要 类类型的属性名称与前端传递参数的参数名称一致

  1. @Controller
  2. public class DemoController {
  3.  
  4. @RequestMapping("/demo")
  5. public String fun01(People peo) {//字符串的返回值代表代表要跳转的页面
  6.  
  7. System.out.println(peo.getName());
  8. System.out.println(peo.getAge());
  9. System.out.println("指定了demo");
  10. //返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
  11. //相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
  12. //"demo/main.jsp"
  13.  
  14. return "/main.jsp";
  15. }
  16. }

(3) 前端传递的参数,在springMVC的controller中使用HttpServletRequest进行接受

  1. @Controller
  2. public class DemoController {
  3.  
  4. @RequestMapping("/demo")
  5. public String fun01(HttpServletRequest req) {//字符串的返回值代表代表要跳转的页面
  6.  
  7. System.out.println("指定了demo");
  8. //返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
  9. //相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
  10. //"demo/main.jsp"
  11. System.out.println(req.getParameter("name"));
  12. System.out.println(req.getParameter("age"));
  13. return "/main.jsp";
  14. }
  15. }

(4) 前端传递的参数,在springMVC的controller中 同时使用上述三中方法进行接受

  1. @Controller
  2. public class DemoController {
  3.  
  4. @RequestMapping("/demo")
  5. public String fun01(People peo, String name,int age,HttpServletRequest req) {//字符串的返回值代表代表要跳转的页面
  6. System.out.println(name);
  7. System.out.println(age);
  8. System.out.println(peo.getName());
  9. System.out.println(peo.getAge());
  10. System.out.println("指定了demo");
  11. //返回值最好写全路径,全路径就是以"/"开头的路径,否则就是相对路径,
  12. //相对路径就是以相对当前方法的映射路径,例如如果返回值是"main.jsp",是相对路径,最后的绝对路径是
  13. //"demo/main.jsp"
  14. System.out.println(req.getParameter("name"));
  15. System.out.println(req.getParameter("age"));
  16. return "/main.jsp";
  17. }
  18. }

(二)@RequestParam()注解

(1) 如果请求参数名和方法参数名不对,使用value属性

  1. @RequestMapping("demo")
  2. public String demo(@RequestParam(value="name1") String name,@RequestParam(value="age1")int age)
  3. {
  4. System.out.println("执行 demo"+" "+name+""+age);
  5. return "main.jsp";
  6. }

(2)如果接受参数是基本类型,且接受参数类型与null无法进行兼容,此时可以采用包装类型或者采用默认值,使用defaultValue属性

  1. @RequestMapping("page")
  2. public String page(@RequestParam(defaultValue="2")int pageSize,@RequestParam(defaultValue="1") int pageNumber){
  3.   System.out.println(pageSize+" "+pageNumber);
  4.   return "main.jsp";
  5. }

(3)如果强制要求必须有某个参数,使用required属性

  1. @RequestMapping("demo2")
  2. public String demo2(@RequestParam(required=true) String name){
  3.   System.out.println("name 是 SQL 的查询条件,必须要传递 name 参数"+name);
  4.   return "main.jsp";
  5. }

(4)传递List类型的参数 使用value属性,因为在前端传递过来的list都会放入一个参数名称中,只要把这个参数名称和一个List类型变量进行绑定

  1. @RequestMapping("demo5")
  2. public String demo5(String name,int age,@RequestParam("hover")List<String> abc){
  3.   System.out.println(name+" "+age+" "+abc);
  4.   return "main.jsp";
  5. }

(5)请求参数中对象.属性格式

jsp中的代码如下

  1. <input type="text" name="peo.name"/>
  2. <input type="text" name="peo.age"/>

此时需要创建一个类,类中要有一个属性是peo,且这个属性的类型必须是包含name,age这个两个属性的类,两个类都要有get/set方法,

Demo类型

  1. public class Demo {
  2. private People peo;
  3.  
  4. public People getPeo() {
  5. return peo;
  6. }
  7.  
  8. public void setPeo(People peo) {
  9. this.peo = peo;
  10. }
  11.  
  12. @Override
  13. public String toString() {
  14. return "Demo [peo=" + peo + "]";
  15. }
  16.  
  17. }

People 类型

  1. public class People {
  2. private String name;
  3. private Integer age;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public Integer getAge() {
  11. return age;
  12. }
  13. public void setAge(Integer age) {
  14. this.age = age;
  15. }
  16. @Override
  17. public String toString() {
  18. return "People [name=" + name + ", age=" + age + "]";
  19. }
  20.  
  21. }

controller 的接受参数

  1. @RequestMapping("demo6")
  2. public String demo6(Demo demo){
  3.   System.out.println(demo);
  4.   return "main.jsp";
  5. }

(三) restful风格的参数

首先请求参数的格式一定的要求,老的方式是<a href="demo8?name=张三&age=23">跳转</a>

而restful格式是:<a href="demo8/123/abc">跳转</a>

在控制器中:

在@RequestMapping 中一定要和请求格式对应
 {名称} 中名称自定义名称
 @PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找.

  1. @RequestMapping("demo8/{id1}/{name}")
  2. public String demo8(@PathVariable String name,@PathVariable("id1") int age){
  3.   System.out.println(name +" "+age);
  4.   return "/main.jsp";
  5. }

springMVC 学习 五 参数传递(包括restful风格)的更多相关文章

  1. springMVC入门(七)------RESTFul风格的支持

    简介 RESTful风格(Representational State Transfer),又叫表现层状态转移,是一种开发理念,也是对HTTP协议很好的诠释 主要理念是将互联网中的网页.数据.服务都视 ...

  2. (转)SpringMVC学习(五)——SpringMVC的参数绑定

    http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...

  3. ElasticSearch7.3学习(二十)----采用restful风格查询详解

    1.Query DSL入门 1.1 DSL DSL:Domain Specified Language,特定领域的语言.es特有的搜索语言,可在请求体中携带搜索条件,功能强大. 查询全部 GET /b ...

  4. springMVC学习五(转发和乱码)

    摘录http://www.cnblogs.com/xdp-gacl/p/3798347.html http://www.cnblogs.com/xdp-gacl/p/3798347.html 四个很重 ...

  5. Restful风格API接口开发springMVC篇

    Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...

  6. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  7. restful风格接口和spring的运用

    Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...

  8. [五]SpringMvc学习-Restful风格实现

    1.Restful风格的资源URL 无后缀资源的访问(csdn用法) 2.SpringMvc对Rest风格的支持 2.1将 /*.do改为/ 2.2 3.@PathVariable获取Url变量 @R ...

  9. SpringMVC 学习笔记(五) 基于RESTful的CRUD

    1.1. 概述 当提交的表单带有_method字段时,通过HiddenHttpMethodFilter 将 POST 请求转换成 DELETE.PUT请求,加上@PathVariable注解从而实现  ...

随机推荐

  1. Vue之VueRouter

    Vue之VueRouter实现原理 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  2. 【转】 mysql 数据优化

    数据库优化离不开索引,如何理解索引? ---------------------------------------------------------------------------- 可以参考 ...

  3. mysql数据库分区及测试

    1. 测试数据库是否支持分区 mysql可以通过下面语句判断是否支持分区: SHOW VARIABLES LIKE '%partition%'; 如果输出:have_partitioning   YE ...

  4. MDK生成.bin

    方法1: 默认选择编译输出的路径输出bin fromelf.exe --bin -o "$L@L.bin" "#L" 保存编译 方法2: 在要输出的目录下,新建 ...

  5. Windows系统制作Ubuntu启动U盘(命令行)

    背景 现今Ubuntu系统的使用越来越多,考虑到日常办公还是用Windows系统,但开发的需求常常要有Linux系统.因此将Linux系统安装到U盘不失为一种好的选择.在Windows系统上制作Ubu ...

  6. go语言net包udp socket的使用

    udp与tcp的不同在于客户端请求方式不同,udp缺少Accept函数. 一个简单的udp客户端: package main; import ( "net" "log&q ...

  7. sqlserver window身份验证时切换账户的快捷键

    sqlserver window身份验证时切换账户的快捷键:ctrl+alt_del

  8. C#生成二维码(可保存二维码图片)

    https://www.cnblogs.com/wlays/p/7994393.html 1.NuGet中搜索QRCoder,安装这个插件. 2.创建一个一般处理程序,代码: public void ...

  9. ftp上传文件异常

    ftp一个服务器 如果是22端口 ssh-2.0-openssh_4.3 ,是什么意思? ftp服务用的是20.21端口,客户端添加ftp信息的时候输入的是21端口 ssh服务用的是22端口,应用于远 ...

  10. oracle 异常错误处理

    分类: Oracle 5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4 用户定义的异常处理 5.2 异常错误传播 5.2 ...