博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
Java进阶02 异常处理
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Heritrix 3.1.0 源码解析(十二)
查看>>
java 动态代理
查看>>
微信5.0绑定银行卡教程
查看>>
数字转换为壹仟贰佰叁拾肆的Java方法
查看>>
引发网页布局灾难的7个大错误
查看>>
一个表单对应多个提交按钮,每个提交按钮对应不同的行为
查看>>
tomcat集群时统计session与在线人数
查看>>
Android程序完全退出
查看>>
【Linux】目录权限与文件权限
查看>>
如何将阿拉伯数字每三位一逗号分隔,如:15000000转化为15,000,000
查看>>
select的使用(一)
查看>>
[leetcode]Search a 2D Matrix @ Python
查看>>
java.io.BufferedOutputStream 源码分析
查看>>
Load resources from classpath in Java--reference
查看>>
关于LightMapping和NavMesh烘焙的动态载入
查看>>
(转)Android中使用ormlite实现持久化(一)--HelloOrmLite
查看>>
C语言近程型(near)和远程型(far)的区别是什么?
查看>>
jQuery选择器总结
查看>>