一、处理requet uri 部分:@PathVariable

  • @PathVariable是Spring3.0新增的功能

  • 通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的传入参数中。源码如下

  • URL中的{xxx}点位符,通过@PathVariable("xxx")绑定到操作方法中的传入参数

1、测试

  • 控制器

@RequestMapping("/testPathVariable/{id}")public String testPathVariable(@PathVariable("id") Integer id){System.out.println("PathVariable  "+id);return "success";}
  • 请求

<a href="requestData/testPathVariable/2">测试 @PathVariable</a>

2、总结

  • @RequestMapping("/testPathVariable/{id}")也可以放在类上面,如下所示

@Controller@RequestMapping("/owners/{ownerId}")public class RelativePathUriTemplateController {  @RequestMapping("/pets/{petId}")  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {        // implementation omitted  }}

那么它对应的请求:/owers/1/pets/2

  • 上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。

二、处理request header部分@RequestHeader, @CookieValue

1、@RequestHeader

1.1 知识点

  • 请求头,包含了若干属性,服务器可据此获知客户端的信息(可以通过firebug来查看)

  • 通过@RequestHeader即可将请求头的属性值绑定到处理方法的传入参数中。源码如下

1.2 测试

  • 控制器类

@RequestMapping("/testRequestHeader")public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){System.out.println("Accept-Language:"+al);return "success";}
  • 请求

<a href="requestData/testRequestHeader">测试@RequestHeader</a>

2、使用@CookieValue绑定请求中的Cookie值

2.1、知识点

  • 查看Cookie

  • @CookieValue可以处理方法传入绑定某个Cookie值

2.2 测试

  • 测试类

@RequestMapping("/testCookieValue")public String testCookieValue(@CookieValue(value="JSESSIONID") String jSession){System.out.println("JSESSIONID:"+jSession);return "success";}
  • 请求

<a href="requestData/testCookieValue">测试@CookieValue</a>

三、处理request body部分的注解:@RequestParam,  使用POJO对象绑定请求参数值;

1、使用@RequestParam绑定请求参数值

1.1 知识点

  • 源代码

  • 在处理方法的传入参数处,使用@RequestParam可以把请求参数传递给方法

    • value:参数名

    • required:是否必须,默认为true,表示参数中必须包含对应的参数,若不存在,将抛出异常。

    • defaultValue:请求参数的默认值

1.2、测试

  • 控制器类

@RequestMapping("/testRequestParam")public String testRequestParam(@RequestParam(value="userName",required=false) String userName,@RequestParam(value="age",defaultValue="20") int age,@RequestParam(value="password") String password){System.out.println("userName:"+userName);System.out.println("age:"+age);System.out.println("password:"+password);return "success";}
  • 请求

<a href="requestData/testRequestParam">测试@RequestParam(没有传值)</a><br><a href="requestData/testRequestParam?userName=imentors&password=123456">测试@RequestParam(传值)</a>

2、使用POJO对象绑定请求参数值

2.1、 知识点

  • SpringMVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值

  • 支持级联属性。如dept.deptId、dept.address.tel

2.2 、测试

  • bean

public class Address {private String province;private String city;@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";}}
public class User {private String username;private String password;private String email;private int age;@Overridepublic String toString() {return "User [username=" + username + ", password=" + password+ ", email=" + email + ", age=" + age + ", address=" + address+ "]";}}
  • 控制器

@RequestMapping("/testPojo")public String testPojo(User user){System.out.println("testPOJO:"+user);return "success";}
  • 请求

<form action="requestData/testPojo" method="post">          username:<input type="text" name="username"/>       <br/>         password:<input type="password" name="password"/>       <br/>         email:<input type="text" name="email"/>         <br/>         age:<input type="text" name="age"/>         <br/>         city:<input type="text" name="address.city"/>       <br/>         province:<input type="text" name="address.province"/>       <br/>         <input type="submit" value="提交"/>   </form>

2.3 总结

  • 如果请求的表单参数中不存在pojo对象中的某个域名称的项目,则绑定后pojo该属性为null。

  • 如果请求的表单参数中存在pojo对象中没有包含的域的项目,则绑定后该参数丢失。

  • 如果表单项目的数据会自动从String转换为相应pojo的域类型。但如果类型无法转换,则报错。如果我输入age为dafsdfa,那么报错。

四、使用servlet api对象作为入参

1、使用servlet api对象作为入参

1.1、知识点

  • 使用servlet api类作为入参时,spring mvc会自动将web层对应的servlet API对象传递给处理方法入参,处理方法入参可同时使用其它符合要求的入参,位置顺序无特殊要求。

  • 如果处理方法自行使用HttpServletResponse返回响应,则处理方法返回值需设置成void.

  • Spring mvc在org.springframework.web.context.request包下提供了若干个可代理Servlet原生API类的接口

1.2 测试

  • 控制器

@RequestMapping("/testServletApi")public String testServletApi(HttpServletRequest request,HttpServletResponse response){System.out.println("testServletAPI:"+request+","+response);return "success";}
  • 请求

<a href="requestData/testServletApi">测试ServletApi</a>

1.3 总结

可以使用Servlet原生的Api作为目标方法的参数,具体支持以下类型

  • HttpServletRequest

  • HttpServletResponse

  • HttpSession

  • Java.security.Principal

  • InputStream

  • OutputStream

  • Reader

  • Writer

关注我们

    师享空间的宗旨是分享知识,传播价值。关注我们,及时获得更多信息。




捐赠我们
    如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。

转载于:https://blog.51cto.com/imentors/1720552

03-SpringMVC-获得用户请求数据相关推荐

  1. 怎么调用获取被创建的预制体_Go 语言 Web 编程系列—— 获取用户请求数据(上)...

    0.GET/POST 请求数据 在 PHP 中,可以直接通过全局变量 $_GET 和 $_POST 快速获取 GET/POST 请求数据,GET 请求数据主要是 URL 查询字符串中包含的参数,以前面 ...

  2. 论文阅读:基于用户上网数据的电影个性化推荐系统研究

    基于用户上网数据的电影个性化推荐系统研究 赵鹏程,黄韬* *(北京邮电大学信 工程学院,北京 100876) 摘要:本文讲述了如何构建出完整电影知识图谱的方法,同时提出了一套发掘电影系列的实现算法.基 ...

  3. springMVC获取异步请求的参数,返回异步请求数据(json),跨域访问简单了解,文件上传,与Restful风格

    springMVC获取异步请求的参数 JQuery发送异步请求回顾 <a href="javascript:void(0);" id="testAjax" ...

  4. Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)

    问题描写叙述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的訪问请求,有时还可能须要响应Android和JavaSE(桌面 ...

  5. Java语言开发在线购物推荐网 购物商城推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线购物推荐网 购物商城推荐系统 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据.人工智能.机器学习项目开发ShopRec ...

  6. Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据.人工智能.机器学习项目开发Mus ...

  7. python---POST/GET请求数据包,图片验证码自动化识别,pytesseract,模拟用户一次正常登录

    python-POST/GET请求数据包,图片验证码自动化识别,pytesseract 项目内容: 模拟用户正常登录Binzcms系统,对登录Binzcms系统进行自动化识别图片验证码,使用get与p ...

  8. Java开发在线购物推荐网 购物商城推荐系统 基于用户、物品的协同过滤推荐算法 京东商城爬虫 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习项目开发

    Java开发在线购物推荐网 购物商城推荐系统 基于用户.物品的协同过滤推荐算法 京东商城爬虫 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据.人工智能.机器学习项目开发Sh ...

  9. java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)

    数据回显 什么数据回显 提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面. pojo数据回显方法 1.springmvc默认对pojo数据进行回显. pojo数据传入controller方法 ...

最新文章

  1. 寄存器理解 及 X86汇编入门
  2. ubuntu18.04安装pycharm专业版
  3. python drawline_基于python,OPenCv中基本的绘图函数
  4. ubuntu16 php mysql_Ubuntu16.04 搭建 LAMP(Ubuntu16.04 、apache 2.4.18、MySQL 5.7.22、PHP 7.0.28)...
  5. 200813_C指针
  6. 计算机二级测试试题及答案,2017计算机二级测试题及答案解释
  7. 计算机地图制图的点状符号制作,地理空间信息符号化表达研究
  8. Android 系统(251)---sec2.0和sec2.1新增分区DA客制化步骤
  9. 知道央视大楼为什么又叫“痔疮”么,看看你就明白了
  10. [SQL]实战之统计出当前各个title类型对应的员工当前薪水对应的平均工资
  11. Javascript中的条件语句和循环语句
  12. linux c 读txt文件内容,如何利用C/C++逐行读取txt文件中的字符串
  13. 微信小游戏代码包侵权解决方案升级版
  14. 网站推广 seo优化 教程102条
  15. 微信小程序前期申请企业认证、后期提审发布流程
  16. 阿里巴巴江苏云计算数据中心项目在南通开工 项目一期计划2019年建成运营
  17. 7-3 求分数序列前N项和 (15分)
  18. Icarus Verilog
  19. Bootstrap 导航元素( tab导航)标签页
  20. Safari浏览器模拟iPhone手机浏览器的方法

热门文章

  1. OpenStack遇到的坑
  2. 前言(CSDN也有Markdown了,好开森)
  3. 3. std::string::size_type
  4. linux下访问windows共享文件夹
  5. sqlalchemy1.4风格2.0
  6. Nodejs Web网站-请求路径分发
  7. Python使用文本拼图
  8. js 检测input输入值是否全是汉字
  9. Altair HW FEKO+WinProp 2020中文版
  10. JS 时间转化为几分钟前 几小时前 几天前