博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@RequestMapping映射请求
阅读量:4988 次
发布时间:2019-06-12

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

 1、SpringMVC使用
@RequestMapping注解为控制器指定可以处理哪些URL请求。
 
2、在控制器的类定义和方法定义处都可标注@RequestMapping
 
2.1
 类定义处:提供初步的请求映射信息。相对于WEB应用的根目录
2.2 
方法处:提供进一步的细分映射信息。相对于类定义处的URL。
 
3、DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
 
4. @RequestMapping
请求URL(value)、请求方法(method)、请求参数(params)、请求头映射(headers)、consumes,produces
 
--param1:参数必须包含param1
--!param1:参数不能包含param
--param1!=value1:必须包含param,并且值不等于value1
--{“param1=value1”,“param2”}:必须包含param1和param2,并且param1的值等于value1
5.
 Ant风格资源地址支持3中匹配符:
-  ?:匹配文件名中的一个字符;
/user/???User匹配:   /user/addUser  /user/edtUser
-  *:匹配文件名中的任意字符;
/user/*/addUser匹配:/user/my/addUser    /user/system/addUser
-- **:匹配多层路径 
/user/** /addUser匹配:/user/addUser  /user/system/my/addUser
6.
带占位符的URL是Spring3.0新增的功能 
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中 
 
@RequestMapping("/delete/
{id}")
public String delete(
@PathVariable("id") Integer id){
           userDao.delete(id);
           return "redirect:/user/list.do";
 
7.
RequestMapping注解
 

RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

i、 value, method;

value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method:  指定请求的method类型, GET、POST、PUT、DELETE等;

ii、 consumes,produces;

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

iii、 params,headers;

params: 指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
示例:

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B)  可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

example B)

 
  1. @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)  
  2. public String findOwner(@PathVariable String ownerId, Model model) {  
  3.   Owner owner = ownerService.findOwner(ownerId);    
  4.   model.addAttribute("owner", owner);    
  5.   return "displayOwner";   
example C)
 2 consumes、produces 示例

cousumes的样例:

    1. @Controller  
    2. @RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")  
    3. public void addPet(@RequestBody Pet pet, Model model) {      
    4. // implementation omitted  
    5. }  
    方法仅处理request Content-Type为“application/json”类型的请求。

    produces的样例:

    1. @Controller  
    2. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")  
    3. @ResponseBody  
    4. public Pet getPet(@PathVariable String petId, Model model) {      
    5. // implementation omitted  
    6. }  

    方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;

     

    3 params、headers 示例

    params的样例:

    1. @Controller  
    2. @RequestMapping("/owners/{ownerId}")  
    3. public class RelativePathUriTemplateController {  
    4. @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")  
    5. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
    6. // implementation omitted  
    7.   }  
    8. }  

     仅处理请求中包含了名为“myParam”,值为“myValue”的请求;

     

    headers的样例:

    1. @Controller  
    2. @RequestMapping("/owners/{ownerId}")  
    3. public class RelativePathUriTemplateController {  
    4. @RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")  
    5. public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
    6. // implementation omitted  
    7.   }  
    8. }  

     仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;

     

     

转载于:https://www.cnblogs.com/esther-qing/p/5899756.html

你可能感兴趣的文章
ME525+ Defy+ 刷机指南[zz]
查看>>
支持触屏的jQuery轮播图插件
查看>>
差一点搞混了Transactional注解
查看>>
javascript基本函数
查看>>
前端公共库cdn服务推荐//提高加载速度/节省流量
查看>>
snprintf 返回值陷阱 重新封装
查看>>
asp.net GridView多行表头的实现,合并表头
查看>>
C#套打
查看>>
PolyCluster: Minimum Fragment Disagreement Clustering for Polyploid Phasing 多聚类:用于多倍体的最小碎片不一致聚类...
查看>>
【每日进步】July 2012
查看>>
327 作业
查看>>
sql 取汉字首字母
查看>>
bzoj4034: [HAOI2015]树上操作(树剖)
查看>>
${sessionScope.user}的使用方法
查看>>
WCF开发框架形成之旅---结合代码生成工具实现快速开发
查看>>
Spring事务管理
查看>>
linux下mysql配置文件my.cnf详解
查看>>
SublimeText快捷键操作
查看>>
Python开发 基礎知識 (未完代補)
查看>>
08ssm三大框架整合以前步骤
查看>>