当前位置: 首页 > news >正文

SpringMVC第四阶段:Controller中如何接收请求参数

Controller中如何接收请求参数

1、原生API参数类型

1.1、HttpServletRequest类

只需要在Controller的目标方法中, 直接写上HttpServletRequest对象即可获取 原生API的 request对象实例。

@RequestMapping(value = "/p1")
public String param1(HttpServletRequest request){System.out.println(" httpServletRequest对象 : " + request);System.out.println("获取请求的参数: " + request.getParameter("username"));System.out.println("获取工程路径: " + request.getContextPath());System.out.println("获取请求资源路径:  " + request.getRequestURI());return "ok";
}

1.2、HttpSession类 和HttpServletResponse类

@RequestMapping(value = "/p2")
public String param2(HttpSession session , HttpServletResponse response){System.out.println(" 会话id: " + session.getId());System.out.println(" 是否是新创建的: " + session.isNew() );System.out.println( "response对象" + response );return "ok";
}

以上这几个原生API 只需要在Controller 控制器的方法上直接写参数就可以获取,使用跟原来一样.

2、普通类型入参

/*** 在SpringMVC框架中,如果要获取请求的参数,只需要把参数直接写在Controller的方法上即可.<br/>*  注意点: <br/>*      1 参数的类型要一致 <br/>*      2 参数名要一致! <br>*/
@RequestMapping(value = "/p3")
public String param3(String username,Integer age,String password){System.out.println("请求参数 username 的值是: " + username);System.out.println("年龄 : " + age);System.out.println("密码 : " + password);return "ok";
}

3、普通类型数组的参数

/*** 如果要使用SpringMVC获取多个参数值的时候,只需要直接写成数组即可!!! <br/>*  注意点: <br/>*      1 参数的类型要一致 <br/>*      2 参数名要一致! <br>*/
@RequestMapping(value = "/p4")
public String param4(String[] hobby){System.out.println("兴趣爱好: " + Arrays.asList(hobby));System.out.println("爱好1 : " + hobby[0]);System.out.println("爱好2 : " + hobby[1]);return "ok";
}

4、普通类型使用@RequestParam入参

示例代码:

/*** 客户端的参数名是username, 服务器参数名是user. 是否可以取值.<br/>* @RequestParam(name = "username") String user  <br/>* 表示把请求参数 username 的值,赋给方法参数 user <br/>** 如果没有传递就会报错. <br/>* required = false 表示客户端不传递不报错.值为null <br/>* defaultValue 表示默认值 <br/>* @param user* @return*/
@RequestMapping(value = "/p5")
public String param5(@RequestParam(name = "username",required = false,defaultValue = "哟!!") String user){System.out.println("user的值是: " + user);return "ok";
}

如果指定的参数客户端 不传递 , 就会报以下错误。

在这里插入图片描述

5、@RequestHeader获取请求头入参

@RequestParam注解是获取指定请求参数的值注入到Controller方法参数中
@ReqeustHeader 注解是将指定请求头的值注入到Controller方法参数中

@RequestParam和@ReqeustHeader 注解的使用规则一样

@RequestMapping(value = "/p6")
public  String param6(@RequestHeader(name="User-Agent")  String userAgent,@RequestHeader(name="Connection")String connection ){System.out.println("请求头 userAgent 的值是: " + userAgent);System.out.println("请求头 connection 的值是: " + connection);return "ok";
}

6、@CookieValue获取Cookie值入参

@CookieValue注解和@RequestParam注解和@ReqeustHeader 注解使用规则完全一样.
把请求的Cookie的值注入到Controller方法参数中

@RequestMapping(value = "/p7")
public  String param7(@CookieValue(name = "JSESSIONID") String jSessionId){System.out.println("Cookie jSessionId 的值是: " + jSessionId);return "ok";
}

@CookieValue注解:获取Cookie值注入方法参数
@RequestParam注解:获取客户端参数值注入方法参数
@ReqeustHeader 注解 :获取请求头注入方法参数

7、Pojo对象类型的参数

只需要注意请求的参数名要和JavaBean的属性名一致即可

表单:

<%--斜杠表示绝对路径.如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">编号: <input id="id" name="id" /> <br>名称: <input id="name" name="name" /> <br>年龄: <input id="age" name="age" /> <br>电话: <input id="phone" name="phone" /> <br><input type="submit" value="提交" />
</form>

JavaBean对象:

public class Person {private Integer id;private String name;private Integer age;private String phone;}

Controller中的代码:

/***  请求的参数名要和javaBean的属性名一致!!!*/
@RequestMapping(value = "/addperson")
public String person(Person person){System.out.println("用户信息保存 ==>>> " + person);return "ok";
}

8、对象中套对象(级联属性)

表单:

<%--斜杠表示绝对路径.如果是浏览器解析 , 得到的路径是: http://ip:port/ <br/>如果是服务器解析 , 得到的路径是: http://ip:port/工程路径/
--%>
<form action="${pageContext.request.contextPath}/addperson" method="get">编号: <input id="id" name="id" /> <br>名称: <input id="name" name="name" /> <br>年龄: <input id="age" name="age" /> <br>电话: <input id="phone" name="phone" /> <br><%--使用级联属性赋值--%>车名: <input id="car.name" name="car.name" /> <br>车牌: <input id="car.carNo" name="car.carNo" /> <br><input type="submit" value="提交" />
</form>

JavaBean代码 :

public class Car {private String name;private String carNo;
}
public class Person {private Integer id;private String name;private Integer age;private String phone;private Car car;
}
http://www.lryc.cn/news/69045.html

相关文章:

  • 第三十回: LisvtView响应事件
  • 重磅!用友荣登全球5强
  • 计算机组成原理实验报告二-认识汇编语言
  • 都说计算机今年炸了,究竟炸到什么程度呢?
  • 0Ω的电阻作用
  • 02 PostGIS常用空间分析函数
  • [Golang] 管理日志信息就用Zap包
  • 【pytest】执行环境切换的两种解决方案
  • 2023国赛tomcat题
  • 计算机视觉——day 92 基于跨领域协作学习的单图像去雨
  • Java 正则表达式
  • Oracle索引知识看这一篇就足够
  • kafka命令行操作
  • Pinia 上手使用(store、state、getters、actions)
  • C++小项目之文本编辑器mynote(1.0.0版本)
  • 人工智能的界面革命,消费者与企业互动的方式即将发生变化。
  • 深度学习课程:手写体识别示例代码和详细注释
  • 10-03 单元化架构设计
  • JAVA—实验3 继承与多态
  • TCP协议和相关特性
  • 【SpringCloud组件——Eureka】
  • JVM面试题(一)
  • c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中
  • 《统计学习方法》——隐马尔可夫模型(上)
  • ElasticSearch删除索引【真实案例】
  • 基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计
  • 对 Iterator, Generator 的理解?
  • C++基础
  • 软件测试全流程
  • 【软件测试】支付模块测试攻略,这些测试方法和注意事项你掌握了么?