`
nicegege
  • 浏览: 591105 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

@RequestMapping注解实践

 
阅读更多

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#

分享到:
评论

相关推荐

    SpringMybatis项目基于@RequestMapping和RequstAttribute实现登录注册

    在SpringMybatis项目中,利用`@RequestMapping`和`RequestAttribute`实现登录注册功能是Web开发中的常见实践。`@RequestMapping`是Spring MVC框架中用于处理HTTP请求映射的注解,而`RequestAttribute`则用于在请求...

    springmvc:@Controller @RequestMapping @RequestParam,模型和ModelAndView Spring MVC实践

    在Spring MVC框架中,`@Controller`、`@RequestMapping`、`@RequestParam`以及`ModelAndView`是四个关键的注解,它们对于构建基于Java的Web应用程序至关重要。下面将详细介绍这些概念及其在实际开发中的应用。 `@...

    Spring MVC入门

    3. 控制器的创建和使用:学会使用@Controller和@RequestMapping注解来创建控制器并定义处理请求的方法。 4. 响应的生成:学习如何通过返回值来生成响应,以及如何使用@RestController注解来直接返回数据。 5. 路由...

    Spring3MVC注解(附实例).doc

    然后,我们使用 @RequestMapping 注解标注该控制器类的路径为 /user,並定义了一个 userList 方法,使用 @RequestMapping 注解标注该方法的路径为 /list。 总结 Spring3MVC 注解提供了一种简洁、灵活的方式来开发 ...

    项目那些事

    本文将深入探讨`@RequestMapping`注解的使用、功能以及在实际项目中的应用。 `@RequestMapping`注解是Spring框架提供的,主要用于处理HTTP请求。它可以应用于类级别或方法级别,以定义一组映射规则,将特定的HTTP...

    Spring 2.5 基于注解驱动的 Spring MVC.docx

    在 ② 处的 @RequestMapping 注解则用于指定该控制器处理的 HTTP 请求路径,这里的 "/forum.do" 表示所有以 "/forum.do" ...随着 Spring 框架的不断发展,注解驱动的编程模式已经成为现代 Java Web 开发的标准实践。

    使用 Spring 2.5 基于注解驱动的 Spring.pdf

    ### 使用Spring 2.5基于注解驱动的SpringMVC:深入解析与实践 #### 核心知识点概览 在Spring 2.5版本中,框架显著增强了对注解的支持,特别是针对SpringMVC(Model-View-Controller)模块,引入了基于注解的配置...

    Springmvc注解文档

    在这个例子中,`@Controller`注解用于标记类作为Spring MVC的控制器,而`@RequestMapping`注解用于定义处理的URL路径。例如,`@RequestMapping("/forum.do")`表示`BbtForumController`将处理所有以"/forum.do"开头的...

    搭建ssm demo例子

    - 使用@RequestMapping注解映射URL到方法,如`@RequestMapping("/user")`或`@RequestMapping(value = "/getUser", method = RequestMethod.GET)` - 方法上使用注解接收和返回数据,如`@RequestParam("id") int ...

    springmvc入门实例

    在 Spring MVC 3.2 中,可以通过 @RequestMapping 注解来映射 URL 到 Controller 方法,实现灵活的请求路由。 接下来是映射处理器。Controller 类中的方法通常带有 @RequestMapping 注解,用于指定哪些请求应该由该...

    springmvc的@Validated注解使用

    本文将详细介绍@SpringMVC的@Validated注解的使用方法,并提供实践示例代码。 一、@Validated注解的使用 @Validated注解是一个SpringMVC框架提供的验证工具,该注解可以应用于Controller方法的参数上,以便验证...

    springmvc注解实例

    - 控制器类,使用@Controller和@RequestMapping注解,定义处理HTTP请求的方法。 - 服务类,使用@Service注解,包含业务逻辑和对JdbcTemplate的调用。 - 数据访问对象(DAO)类,使用@Repository注解,定义数据库查询...

    spring3 mvc系列一:架构基本配置(注解版)

    在Spring MVC中,我们可以使用@RequestMapping注解来定义处理器方法对哪些请求路径进行响应。这个注解可以应用于类级别和方法级别,类级别的映射可以看作是前缀,方法级别的映射则是具体的路径。例如: ```java @...

    springmvc注解详解

    在 Spring 4.3 版本之后,为了增强代码的可读性,引入了 `@GetMapping` 和 `@PostMapping` 这两个注解,分别用于简化 `@RequestMapping(method = RequestMethod.GET)` 和 `@RequestMapping(method = RequestMethod....

    SpringMVC精品资源--JAX-RS &amp; SpringMVC supported maven buil.zip

    SpringMVC通过DispatcherServlet作为入口点,负责请求的分发,使得开发者可以使用注解来简化配置,如@Controller、@RequestMapping等。 JAX-RS,全称Java API for RESTful Web Services,是Java标准中定义的一套...

    ssm注解集成

    5. 编写Controller:创建一个Controller类,使用@Controller注解标识,然后在方法上使用@RequestMapping注解,实现URL路由。 6. 测试:通过单元测试或者运行项目,验证SSM框架的集成是否成功。 五、源码分析 深入...

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。

    注解小例子

    6. 在控制器类上使用@RequestMapping注解处理HTTP请求。 7. 配置Spring XML文件(可选),如果你不完全依赖注解配置。 8. 使用Eclipse的Spring工具集(STS)或Maven插件来管理你的Spring项目。 通过这种方式,你...

    springmvcTest.

    例如,`&lt;mvc:annotation-driven&gt;` 注解驱动配置允许使用 @RequestMapping 等注解。 3. **控制器(Controller)**: 控制器通常由带有 @Controller 注解的类组成,每个处理请求的方法都用 @RequestMapping 注解标记...

    SpringMVC实例

    在SpringMVC中,我们可以使用@Controller注解来标记一个类作为控制器,使用@RequestMapping注解来处理特定的HTTP请求。例如,@RequestMapping("/hello")表示当用户访问/hello时,该方法会被调用。 4. **...

Global site tag (gtag.js) - Google Analytics