spring mvc参数绑定
2014-12-27 23:47
393 查看
注解驱动控制器
通过标注@Controller,再通过<context:component-scan>扫描相应类包,即可使POJO成为一个可以处理请求的控制器。
Spring mvc通过@RequestMapping将请求映射到对应的控制器方法中
在控制器的类定义及方法定义处都可以标注@RequestMapping,类定义出提供初步的请求映射信息,方法处提供进一步细分映射信息。
@RequestMapping
Value:指定请求URL,在类定义处指定的URL相对于Web应用部署目录,方法处指定URL相对于类定义处URL,支持ant风格(即?、*、**字符),和带{xxx}占位符的URL.
通过@PathVariable可以将URL中的占位符参数绑定到方法入参中。
如:
@Controller
@RequestMapping(“/owners/{ownerId}”)
Public class RelativePathUriTemplateController{
@RequestMapping(“/pets/{petId}”)
publicvoid findPet(@PathVariable String ownderId,@PathVariable petId,Model model){
……
}
}
@RequestMapping的value、method、params、headers分别表示请求URL、请求方法、请求参数、及报文头的映射条件,它们之间是与的关系,联合使用多个条件可让请求更精确。
pramas和heads分别通过请求参数及报文头属性进行映射,它们支持简单表达式。
以params为例,headers可以参照prams
parama1:表示请求必须包含名为prama1的请求参数
!parama1:表示请求不能包含param1的请求参数
param1!=value1:表示请求包含名为param1参数,但其值不能为value
{param1=value1,param2}:请求必须包含名为param1和param2参数,并且param1值必须为value1
使用@RequestParam绑定请求参数值
value:参数名
require:是否必须,表示请求必须包含对应参数名,不存在抛异常
public String handler1(@RequestParam(value=”username”,require=false)Stringusername
@RequestParam(“age”)intage){
……
}
使用@CookieValue绑定请求中的Cookie值
@CookieValue(value=”sessionId”,require=false)StringsessionId
使用@RequestHeader绑定请求报文头属性
@RequestHeader(“Accept-Encording”)Stringencording, @RequestHeader(”keep-Alive”)long alive
使用命令/表单对象绑定绑定请求参数
Spring mvc 会按请求参数名和命令/表单对象属性名匹配方式,自动为该对象填充属性值。
@RequestMapping(“/handler4”)
public String handler4(User user)
使用servlet api对象作为入参
使用servlet api类作为入参时,spring mvc会自动将web层对应的servlet API对象传递给处理方法入参,处理方法入参可同时使用其它符合要求的入参,位置顺序无特殊要求。如果处理方法自行使用HttpServletResponse返回响应,则处理方法返回值需设置成void.
Spring mvc在org.springframework.web.context.request包下提供了若干个可代理Servlet原生API类的接口。如WebRequest、NativeWebRequest,它们允许作为处理类的入参,通过这些代理类可以访问请求对象的任何信息。
public void handler21(HttpServletRequestrequest,HttpServletResponse response){
}
public void handler22(HttpServletRequestrequest,HttpServletResponse response,
@RequestParam(“username”)Stringusername){
}
public String handler25(WebRequest request){
Stringusername = request.getParameter(“username”);
……
}
使用IO对象作为入参
Servlet的ServletRequest拥有getInputStream()与getReader()方法,可以通过它们读取请求信息。相应servlet的servletResponse拥有getOutputStream()与getWriter()方法,可以通过它们输出响应信息。
spring mvc 允许控制器处理方法使用java.io.InputStream/java.io.Reader及java.io.OutputStream/java.io.Writer作为方法入参,springmvc将获取ServletRequest相应方法传递给控制器处理方法。
public void handler31(OutputStream os)throwsIoException{
Resourcerec = new ClassPathResource(“/image.jsp”);
FileCopyUtils.copy(res.getInputStream(),os);
}
其它类型参数
java.util.Local,java.security.Principal
@RequestMapping映射请求
通过标注@Controller,再通过<context:component-scan>扫描相应类包,即可使POJO成为一个可以处理请求的控制器。Spring mvc通过@RequestMapping将请求映射到对应的控制器方法中
在控制器的类定义及方法定义处都可以标注@RequestMapping,类定义出提供初步的请求映射信息,方法处提供进一步细分映射信息。
@RequestMapping
Value:指定请求URL,在类定义处指定的URL相对于Web应用部署目录,方法处指定URL相对于类定义处URL,支持ant风格(即?、*、**字符),和带{xxx}占位符的URL.
通过@PathVariable可以将URL中的占位符参数绑定到方法入参中。
如:
@Controller
@RequestMapping(“/owners/{ownerId}”)
Public class RelativePathUriTemplateController{
@RequestMapping(“/pets/{petId}”)
publicvoid findPet(@PathVariable String ownderId,@PathVariable petId,Model model){
……
}
}
@RequestMapping的value、method、params、headers分别表示请求URL、请求方法、请求参数、及报文头的映射条件,它们之间是与的关系,联合使用多个条件可让请求更精确。
pramas和heads分别通过请求参数及报文头属性进行映射,它们支持简单表达式。
以params为例,headers可以参照prams
parama1:表示请求必须包含名为prama1的请求参数
!parama1:表示请求不能包含param1的请求参数
param1!=value1:表示请求包含名为param1参数,但其值不能为value
{param1=value1,param2}:请求必须包含名为param1和param2参数,并且param1值必须为value1
请求处理方法
使用@RequestParam绑定请求参数值value:参数名
require:是否必须,表示请求必须包含对应参数名,不存在抛异常
public String handler1(@RequestParam(value=”username”,require=false)Stringusername
@RequestParam(“age”)intage){
……
}
使用@CookieValue绑定请求中的Cookie值
@CookieValue(value=”sessionId”,require=false)StringsessionId
使用@RequestHeader绑定请求报文头属性
@RequestHeader(“Accept-Encording”)Stringencording, @RequestHeader(”keep-Alive”)long alive
使用命令/表单对象绑定绑定请求参数
Spring mvc 会按请求参数名和命令/表单对象属性名匹配方式,自动为该对象填充属性值。
@RequestMapping(“/handler4”)
public String handler4(User user)
使用servlet api对象作为入参
使用servlet api类作为入参时,spring mvc会自动将web层对应的servlet API对象传递给处理方法入参,处理方法入参可同时使用其它符合要求的入参,位置顺序无特殊要求。如果处理方法自行使用HttpServletResponse返回响应,则处理方法返回值需设置成void.
Spring mvc在org.springframework.web.context.request包下提供了若干个可代理Servlet原生API类的接口。如WebRequest、NativeWebRequest,它们允许作为处理类的入参,通过这些代理类可以访问请求对象的任何信息。
public void handler21(HttpServletRequestrequest,HttpServletResponse response){
}
public void handler22(HttpServletRequestrequest,HttpServletResponse response,
@RequestParam(“username”)Stringusername){
}
public String handler25(WebRequest request){
Stringusername = request.getParameter(“username”);
……
}
使用IO对象作为入参
Servlet的ServletRequest拥有getInputStream()与getReader()方法,可以通过它们读取请求信息。相应servlet的servletResponse拥有getOutputStream()与getWriter()方法,可以通过它们输出响应信息。
spring mvc 允许控制器处理方法使用java.io.InputStream/java.io.Reader及java.io.OutputStream/java.io.Writer作为方法入参,springmvc将获取ServletRequest相应方法传递给控制器处理方法。
public void handler31(OutputStream os)throwsIoException{
Resourcerec = new ClassPathResource(“/image.jsp”);
FileCopyUtils.copy(res.getInputStream(),os);
}
其它类型参数
java.util.Local,java.security.Principal
相关文章推荐
- Spring MVC参数自动绑定List的解决方法
- Spring MVC 入门指南(四)@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
- Spring MVC初始化参数绑定
- Spring MVC 4.0下参数绑定(List类型的参数)
- spring mvc各种常见类型参数绑定方式以及json字符串绑定对象
- spring mvc的数据绑定(参数绑定)
- Spring MVC绑定 List 对象参数
- 解决Spring Mvc中对象绑定参数重名的问题
- spring MVC 参数绑定
- Spring MVC请求参数绑定
- Spring MVC 之 参数绑定
- Spring mvc的参数究竟是如何绑定的
- spring mvc表单中集合类型的参数绑定,含集合下标动态改变
- [Spring MVC] - SpringMVC的各种参数绑定方式
- Spring MVC 常用的参数绑定,传递参数
- Spring MVC参数绑定
- Spring MVC 不同对象的同名参数绑定
- Spring MVC的各种参数绑定方式(请求参数用基础类型和包装类型的区别)(转)
- spring mvc 参数绑定
- Spring MVC参数绑定