[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam

[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam

(2012-06-14 15:43:49)
转载▼

标签: 

cookievalue

 

pathvariable

 

requestbody

 

requestheader

分类: JavaSpring

下列参数一般都和@RequestMapping配合使用。

 

A、@CookieValue

org.springframework.web.bind.annotation.CookieValue

public @interface CookieValue

Annotation which indicates that a method parameter should be bound to an HTTP cookie. Supported for annotated handler methods in Servlet and Portlet environments.

这个注释表示一个方法参数绑定到一个HTTP cookie。支持Servlet和Portlet环境。

The method parameter may be declared as type Cookie or as cookie value type (String, int, etc).

这个方法的参数可声明为Cookie类型或String, int等。

A.1、@CookieValue的属性

String value

The name of the cookie to bind to.

绑定的cookie名称。

boolean required

Whether the header is required.

Default is true, leading to an exception being thrown in case the header is missing in the request. Switch this to false if you prefer a null in case of the missing header.

Head是否需要。默认是true,请求中头丢失将抛出一个异常。False,请求中头丢失将返回null。

Alternatively, provide a defaultValue, which implicitly sets this flag to false.

因此,提供一个defaultValue。

String defaultValue

The default value to use as a fallback. Supplying a default value implicitly sets required() to false.

当required为false,请求中头丢失将返回这个值。

 

B、@PathVariable

Annotation which indicates that a method parameter should be bound to a URI template variable. Supported for RequestMapping annotated handler methods in Servlet environments.

    这个参数指出方法的一个参数绑定到一个URI template变量。在Servlet环境中的被@RequestMapping注释的处理器方法。

B.1、@PathVariable的属性

value

The URI template variable to bind to.

绑定URI template变量。

举例说明

@Controller

public class HelloWorldController {    @RequestMapping("/helloWorld/{userId}")

public String helloWorld(ModelMap model,@PathVariable("userId") String userId) {

       model.addAttribute("attributeName", userId);

       return "helloWorld";

    }

}

当URI template变量和方法的参数名称一样时,可以省略value的定义,@PathVariable达到同样的效果。

 

C、@RequestBody

Annotation which indicates that a method parameter should be bound to the web request body. Supported for annotated handler methods in Servlet environments.

这个注释它指示一个方法的参数绑定到一个web请求的body。它支持Servlet环境中的注释处理器方法。

举例说明

@Controller

public class HelloWorldController {

    @RequestMapping("/hello.do")   

    public String helloWorld(Model model,@RequestBody String reqBody) {

       model.addAttribute("message", reqBody);

       return "helloWorld";

    }

}

这时这个参数reqBody的值是请求页面的form表单的所有值。

 

D、@ RequestHeader

Annotation which indicates that a method parameter should be bound to a web request header. Supported for annotated handler methods in Servlet and Portlet environments.

这个注释它指示一个方法的参数绑定到一个web请求的头信息。它支持Servlet和Portlet环境中的注释处理器方法。

D.1、@ RequestHeader的属性

String defaultValue

The default value to use as a fallback.

默认返回值。

Boolean required

Whether the header is required.

是否需要header。

String value

The name of the request header to bind to.

绑定的请求头名称。

举例说明

@Controller

public class HelloWorldController {

    @RequestMapping("/hello.do")   

    public String helloWorld(Model model,@RequestHeader("Accept") String info) {

       model.addAttribute("message", info);

       return "helloWorld";

    }

}

这时这个参数info将获得请求的Accept头信息。

 

E、@RequestParam

org.springframework.web.bind.annotation.RequestParam

Annotation which indicates that a method parameter should be bound to a web request parameter. Supported for annotated handler methods in Servlet and Portlet environments.

这个参数指出一个方法的参数应绑定到一个web请求的参数。支持Servlet和Portlet环境下注释处理器的方法。

E.1、@RequestParam的属性

E.1.1、value

The name of the request parameter to bind to.

绑定的请求参数的名称。

@RequestParam(value="abc")等同于@RequestParam("abc")

E.1.2、required

Whether the parameter is required.

是否需要参数。

Default is true, leading to an exception thrown in case of the parameter missing in the request. Switch this to false if you prefer a null in case of the parameter missing.

默认为true,若请求中没有参数会导致抛出一个异常。若设置为false,若请求中没有参数就会返回null。

Alternatively, provide a defaultValue, which implicitly sets this flag to false.

在required=false时,最好设置一个defaultValue默认值。

@RequestParam(value = "abc",required=false)

E.1.3、defaultValue

The default value to use as a fallback. Supplying a default value implicitly sets required() to false.

当required=false时,设定默认值。

举例说明

@Controller

@RequestMapping("/a")

public class HelloWorldController {

    @RequestMapping("/b")

    public String helloWorld(Model model,@RequestParam("a") String abc) {

       model.addAttribute("message", abc);

       return "helloWorld";

    }

}

 

F、@ResponseBody

Annotation which indicates that a method return value should be bound to the web response body. Supported for annotated handler methods in Servlet environments.

这个注释它指示一个方法的返回值应该绑定到一个web响应的body中。它支持Servlet环境中的注释处理器方法。

应用@ResponseBody将会跳过视图处理,而是调用合适HttpMessageConverter,将返回值写入输出流。

举例说明

@Controller

@RequestMapping("/a")

public class HelloWorldController {

    @RequestMapping("/b")

    @ResponseBody

    public String helloWorld() {

       return "helloWorld";

    }

}

或者这样定义

@Controller

public class HelloWorldController {

    @RequestMapping("/a/b")

    public @ResponseBody String helloWorld() {

       return "helloWorld";

    }

}

 

这时访问/a/b时,不是返回一个view名为helloWorld的视图,而是作出一个响应,其内容为helloWorld。

 

时间: 2024-10-30 17:30:32

[@Controller]3 详解@CookieValue,@PathVariable,@RequestBody,@RequestHeader,@RequestParam的相关文章

[@Controller]2 详解@RequestMapping

[@Controller]2 详解@RequestMapping  (2012-06-14 15:41:06)转载▼ 标签:  spring   requestmapping   it 分类: JavaSpring A.@RequestMapping org.springframework.web.bind.annotation.RequestMapping Annotation for mapping web requests onto specific handler classes and

Java Spring MVC 上传下载文件配置及controller方法详解_java

下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <!--配置下载返回类型--> <bean class="or

[@Controller]4 详解@ModelAttribute

[@Controller]4 详解@ModelAttribute  (2012-06-14 15:44:55)转载▼ 标签:  spring   modelattribute   it 分类: JavaSpring A.@ModelAttribute Annotation that binds a method parameter or method return value to a named model attribute, exposed to a web view. Supported

跟我学Kafka之Controller控制器详解

作者:小程 我们的kafka源码分享已经进行过很多期了,主要的内容也都分享的差不多了,那么在今后的分享中,主要集中在kafka性能优化和使用. Kafka集群中的其中一个Broker会被选举为Controller,主要负责Partition管理和副本状态管理,也会执行类似于重分配Partition之类的管理任务.如果当前的Controller失败,会从其他正常的Broker中重新选举Controller. 进入KafkaController.scala文件看到如下代码: class KafkaC

ASP.NET MVC Controller激活系统详解:IoC的应用[下篇]

[上篇]除了通过自定义ControllerFactory的方式引入IoC之外,在使用默认DefaultControllerFactory情况下也可以通过一些扩展使基于IoC的Controller激活成为可能.主要的方式就是自定义ControllerActivator和 DependencyResolver. 四.ControllerActivator V.S. DependencyResolver 如下面的代码片断所示,DefaultControllerFactory具有两个构造函数重载,其中一

ASP.NET MVC Controller激活系统详解:IoC的应用[上篇]

所谓控制反转(IoC: Inversion Of Control)简单地说就是应用本身不负责依赖对象的创建和维护,而交给一个外部容器来负责.这样控制权就由应用转移到了外部IoC容器,控制权就实现了所谓的反转.比如在类型A中需要使用类型B的实例,而B实例的创建并不由A来负责,而是通过外部容器来创建.通过IoC的方式是实现针对目标Controller的激活具有重要的意义. 一.从Unity来认识IoC 有时我们又将IoC称为依赖注入(DI: Dependency Injection).所谓依赖注入,

ASP.NET MVC Controller激活系统详解:默认实现

Controller激活系统最终通过注册的ControllerFactory创建相应的Conroller对象,如果没有对ControllerFactory类型或者类型进行显式注册(通过调用当前ControllerBuilder的SetControllerFactory方法),默认使用的是一个DefaultControllerFactory对象,我们现在就来讨论实现在DefaultControllerFactory类型中的默认Controller激活机制. 一.Controller类型的解析 激活

ASP.NET MVC Controller激活系统详解:总体设计

我们将整个ASP.NET MVC框架划分为若干个子系统,那么针对请求上下文激活目标Controller对象的子系统被我们成为Controller激活系统.在正式讨论Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统在ASP.NET MVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么. 一.Controller 我们知道作为Controller的类型直接或者间接实现了IController接口.如下面的代码片断所示,I

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet