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

你可能感兴趣的文章
关于Python数据分析,这里有一条高效的学习路径
查看>>
三亚:严查“先登记支付房款、后补交社保或个税”行为
查看>>
神级程序猿用HTML5代码画出恐龙求欢图,想象力太丰富!
查看>>
谋势、聚力、强生态,用友三十而立
查看>>
python爬虫——40行代码爬取「笔趣看」全部小说
查看>>
数据分析师完整的知识结构
查看>>
Airbnb个性化搜索服务架构
查看>>
当大多数人对Vue理解到炉火纯青的时候,是不是该思考一下怎么让vue页面骚气起来...
查看>>
Vue.js从Virtual DOM映射到真实DOM的过程
查看>>
【译】高阶函数:利用Filter、Map和Reduce来编写更易维护的代码
查看>>
三种方法,刷新 Android 的 MediaStore!让你保存的图片立即出现在相册里!
查看>>
Web存储之localStore 与 sessionStore
查看>>
Java迭代器spliterator
查看>>
利用Docker轻松玩转Cassandra
查看>>
组件化方案调研
查看>>
iOS问题整理08----性能优化
查看>>
IDEA编码编译不通过
查看>>
DDD和Microservices的关系是什么?
查看>>
JavaScript之闭包
查看>>
互联网一线大厂都在用的Java架构师知识体系
查看>>