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格式。
相关推荐
在SpringMybatis项目中,利用`@RequestMapping`和`RequestAttribute`实现登录注册功能是Web开发中的常见实践。`@RequestMapping`是Spring MVC框架中用于处理HTTP请求映射的注解,而`RequestAttribute`则用于在请求...
在Spring MVC框架中,`@Controller`、`@RequestMapping`、`@RequestParam`以及`ModelAndView`是四个关键的注解,它们对于构建基于Java的Web应用程序至关重要。下面将详细介绍这些概念及其在实际开发中的应用。 `@...
3. 控制器的创建和使用:学会使用@Controller和@RequestMapping注解来创建控制器并定义处理请求的方法。 4. 响应的生成:学习如何通过返回值来生成响应,以及如何使用@RestController注解来直接返回数据。 5. 路由...
然后,我们使用 @RequestMapping 注解标注该控制器类的路径为 /user,並定义了一个 userList 方法,使用 @RequestMapping 注解标注该方法的路径为 /list。 总结 Spring3MVC 注解提供了一种简洁、灵活的方式来开发 ...
本文将深入探讨`@RequestMapping`注解的使用、功能以及在实际项目中的应用。 `@RequestMapping`注解是Spring框架提供的,主要用于处理HTTP请求。它可以应用于类级别或方法级别,以定义一组映射规则,将特定的HTTP...
在 ② 处的 @RequestMapping 注解则用于指定该控制器处理的 HTTP 请求路径,这里的 "/forum.do" 表示所有以 "/forum.do" ...随着 Spring 框架的不断发展,注解驱动的编程模式已经成为现代 Java Web 开发的标准实践。
### 使用Spring 2.5基于注解驱动的SpringMVC:深入解析与实践 #### 核心知识点概览 在Spring 2.5版本中,框架显著增强了对注解的支持,特别是针对SpringMVC(Model-View-Controller)模块,引入了基于注解的配置...
在这个例子中,`@Controller`注解用于标记类作为Spring MVC的控制器,而`@RequestMapping`注解用于定义处理的URL路径。例如,`@RequestMapping("/forum.do")`表示`BbtForumController`将处理所有以"/forum.do"开头的...
- 使用@RequestMapping注解映射URL到方法,如`@RequestMapping("/user")`或`@RequestMapping(value = "/getUser", method = RequestMethod.GET)` - 方法上使用注解接收和返回数据,如`@RequestParam("id") int ...
在 Spring MVC 3.2 中,可以通过 @RequestMapping 注解来映射 URL 到 Controller 方法,实现灵活的请求路由。 接下来是映射处理器。Controller 类中的方法通常带有 @RequestMapping 注解,用于指定哪些请求应该由该...
本文将详细介绍@SpringMVC的@Validated注解的使用方法,并提供实践示例代码。 一、@Validated注解的使用 @Validated注解是一个SpringMVC框架提供的验证工具,该注解可以应用于Controller方法的参数上,以便验证...
- 控制器类,使用@Controller和@RequestMapping注解,定义处理HTTP请求的方法。 - 服务类,使用@Service注解,包含业务逻辑和对JdbcTemplate的调用。 - 数据访问对象(DAO)类,使用@Repository注解,定义数据库查询...
在Spring MVC中,我们可以使用@RequestMapping注解来定义处理器方法对哪些请求路径进行响应。这个注解可以应用于类级别和方法级别,类级别的映射可以看作是前缀,方法级别的映射则是具体的路径。例如: ```java @...
在 Spring 4.3 版本之后,为了增强代码的可读性,引入了 `@GetMapping` 和 `@PostMapping` 这两个注解,分别用于简化 `@RequestMapping(method = RequestMethod.GET)` 和 `@RequestMapping(method = RequestMethod....
SpringMVC通过DispatcherServlet作为入口点,负责请求的分发,使得开发者可以使用注解来简化配置,如@Controller、@RequestMapping等。 JAX-RS,全称Java API for RESTful Web Services,是Java标准中定义的一套...
5. 编写Controller:创建一个Controller类,使用@Controller注解标识,然后在方法上使用@RequestMapping注解,实现URL路由。 6. 测试:通过单元测试或者运行项目,验证SSM框架的集成是否成功。 五、源码分析 深入...
在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。
6. 在控制器类上使用@RequestMapping注解处理HTTP请求。 7. 配置Spring XML文件(可选),如果你不完全依赖注解配置。 8. 使用Eclipse的Spring工具集(STS)或Maven插件来管理你的Spring项目。 通过这种方式,你...
例如,`<mvc:annotation-driven>` 注解驱动配置允许使用 @RequestMapping 等注解。 3. **控制器(Controller)**: 控制器通常由带有 @Controller 注解的类组成,每个处理请求的方法都用 @RequestMapping 注解标记...
在SpringMVC中,我们可以使用@Controller注解来标记一个类作为控制器,使用@RequestMapping注解来处理特定的HTTP请求。例如,@RequestMapping("/hello")表示当用户访问/hello时,该方法会被调用。 4. **...