@RequestMapping注解实践ITeye - 众发娱乐

@RequestMapping注解实践ITeye

2019-01-12 09:46:04 | 作者: 小萍 | 标签: 恳求,指定,注解 | 浏览: 2893

1.导言

springMVC供给了http恳求的注解,功能强大,对http协议的封装完成妙到刚好。本文要点学习@RequestMapping注解,一同感触springMVC的强大和精深。

http协议有post和put办法提交数据,可是它们到底有什么不同呢?经过实践了解它们的不同之处。

2.简介

@RequestMapping

它是一个用来处理恳求地址映射的注解。可用于类和办法上。用于类上,表明类中所有恳求的办法都是以该地址作为父途径。RequestMapping有6个特点,分三类阐明:

1.value,method

value:指定恳求的实践地址,指定的地址可所以URI Template形式(后边将会阐明)

method:指定恳求的method类型,GET,POST,PUT,DELETE等

2.consumes,produces

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

produces:指定回来的内容类型,仅当request恳求头中的(Accept)类型中包括指定类型才回来;

3.params,headers

params:指定request中有必要包括某些参数值,才让该办法处理

headers:指定request中有必要包括某些指定的header值,才能让该办法处理恳求。

 

4.示例

1.value / method 示例

默许RequestMapping("...str....")即为value的值

@Controller 
@RequestMapping("/appointments") 
public class AppointmentsController { 
 private final AppointmentBook appointmentBook; 
 @Autowired 
 public AppointmentsController(AppointmentBook appointmentBook) { 
 this.appointmentBook = appointmentBook; 
 @RequestMapping(method = RequestMethod.GET) 
 public Map String, Appointment get() { 
 return appointmentBook.getAppointmentsForToday(); 
 @RequestMapping(value="/{day}", method = RequestMethod.GET) 
 public Map String, Appointment getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { 
 return appointmentBook.getAppointmentsForDay(day); 
 @RequestMapping(value="/new", method = RequestMethod.GET) 
 public AppointmentForm getNewForm() { 
 return new AppointmentForm(); 
 @RequestMapping(method = RequestMethod.POST) 
 public String add(@Valid AppointmentForm appointment, BindingResult result) { 
 if (result.hasErrors()) { 
 return "appointments/new"; 
 appointmentBook.addAppointment(appointment); 
 return "redirect:/appointments"; 
} 

 value的uri值为以下三类:

A)能够指定为一般的详细值;

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

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

exampleB

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET) 
public String findOwner(@PathVariable String ownerId, Model model) { 
 Owner owner = ownerService.findOwner(ownerId); 
 model.addAttribute("owner", owner); 
 return "displayOwner"; 
} 

 exampleC

@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}") 
 public void handle(@PathVariable String version, @PathVariable String extension) { 
 // ... 
} 

 2.consumes、produces示例

consumes的示例:

@Controller 
@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json") 
public void addPet(@RequestBody Pet pet, Model model) { 
 // implementation omitted 
} 

 办法仅处理request Content-Type为"application/json"类型的恳求。

produces的示例:

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

 办法仅处理request恳求总Accept头中包括了“application/json”的恳求,一起暗示了回来的内容类型为application/json;

3.params、headers示例

params的示例:

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

 仅处理恳求中包括了名为“myParam”,职位“myValue”的恳求;

headers的示例:

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

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

 

 实践1

@RequestMapping(value="userInfo",params={"param"},method=RequestMethod.PUT,consumes="application/json",produces="application/json")
 @ResponseBody
 public String userInfo(String param,HttpServletRequest request,HttpServletResponse response,HttpSession session){
 log.info(param);
 return param;
 }

 发送param参数给服务器,param参数契合json格局。

 

 

参阅:http://blog.csdn.net/walkerjong/article/details/7994326#

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章