博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请求数据传入(SpringMVC)
阅读量:7061 次
发布时间:2019-06-28

本文共 3042 字,大约阅读时间需要 10 分钟。

 

1.    请求处理方法签名

 

 Spring MVC 通过分析处理方法的签名,HTTP请求信息绑定到处理方法的相应人参中。

 Spring MVC 对控制器处理方法签名的限制是很宽松的,几乎可以按喜欢的任何方式对方法进行签名。

  必要时可以对方法及方法入参标注相应的注解( @PathVariable 、@RequestParam、@RequestHeader 等)、

 Spring MVC 框架会将 HTTP 请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

①    RequestMapping_请求参数&请求头【了解】

//了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.@RequestMapping(value="/testParamsAndHeaders",params= {"username","age!=10"}, headers = { "Accept-Language=en-US,zh;q=0.8" })public String testParamsAndHeaders(){System.out.println("testParamsAndHeaders...");return "success";}

2.    @RequestParam注解(把请求参数传递给请求方法)

  • 在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法(<form>)
  •  value:参数名
  • required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
  •  defaultValue: 默认值,当没有传递参数时使用该值
/**     * @PathVariable是必须带的,没有required=false可以设置     * @ModelAttribute放在方法前会在每个方法前执行,如果不存在占位符{id},就会报错     * 所以使用@RequestParam,设置required=false,同时提交的表格需要添加该参数     * @param id     * @param model     */    @ModelAttribute    public void getEmployee(@RequestParam(value="id",required=false)Integer id,Model model){        Employee employee = employeeDao.get(id);        if(employee != null)            model.addAttribute("employee", employee);        System.out.println("查出的员工:"+employee);    }

3.    @RequestHeader 注解

  •  使用 @RequestHeader 绑定请求报头的属性值
  • 请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中
//了解: 映射请求头信息 用法同 @RequestParam@RequestMapping(value="/testRequestHeader")public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){System.out.println("testRequestHeader - Accept-Language:"+al);return "success";}
testRequestHeader

4.    @CookieValue 注解

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

  @CookieValue 可让处理方法入参绑定某个 Cookie 值

5.    使用POJO作为参数

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

 Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值支持级联属性。如:dept.deptId、dept.address.tel 等

6.    使用Servlet原生API作为参数

MVC 的 Handler 方法可以接受哪些 ServletAPI 类型的参数

/** * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型 *  * HttpServletRequest  * HttpServletResponse  * HttpSession * java.security.Principal  * Locale InputStream  * OutputStream  * Reader  * Writer * @throws IOException  */@RequestMapping("/testServletAPI")public void testServletAPI(HttpServletRequest request,HttpServletResponse response, Writer out) throws IOException {System.out.println("testServletAPI, " + request + ", " + response);out.write("hello springmvc");//return "success";}
testServletAPI

7.    RequestMapping映射请求占位符PathVariable注解

@PathVariable  映射 URL 绑定的占位符

带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中

URL 中的 {

xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。

 

//@PathVariable 注解可以将请求URL路径中的请求参数,传递到处理请求方法的入参中@RequestMapping(value="/testPathVariable/{id}")public String testPathVariable(@PathVariable("id") Integer id){System.out.println("testPathVariable...id="+id);return "success";}//②	请求链接
testPathVariable

  总结:从目前情况来看@PathVariable、@RequestParam这两个用得比较多,当然还有@ModelAttribute(这个在另外的随笔进行了描写)

转载于:https://www.cnblogs.com/limingxian537423/p/7274443.html

你可能感兴趣的文章
文件修改较优方式
查看>>
oracle导入导出exp,imp
查看>>
oracle check if the display variable is set
查看>>
一键部署Openstack R版
查看>>
《JAVA——帮你解决高并发秒杀》
查看>>
国家级期刊发表要求注意事项
查看>>
C文件操作
查看>>
观察转小写的操作-字符函数
查看>>
Oracle查询访问同一表的两个以上索引(二)
查看>>
office 2016 下载地址
查看>>
Go语言之调试
查看>>
Go语言之 unsafe 包之内存布局
查看>>
Spring Cloud Config 入门
查看>>
rhce第二天笔记
查看>>
oneproxy中间件架构及注意事项
查看>>
phpweb解析不当加上传漏洞
查看>>
CentOS自动挂载NTFS分区的U盘或者移动硬盘
查看>>
2018-2019-1 20165226 20165310 20165315 实验二 固件程序设计
查看>>
安装windows后grub的恢复
查看>>
android学习总结(20120721)
查看>>