Springmvc映射请求(二)

来源:互联网 发布:linux c执行shell命令 编辑:程序博客网 时间:2024/06/08 19:37

一、使用@RequestMapping映射请求

Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求,该注解可以在控制器类定义和方法定义处使用。

  • 类定义处:提供初步的请求信息,相对于web应用请求的根目录
  • 方法处:提供进一步细分的请求信息,相对于类定义处目录(若类定义处未标注则此处相对于web应用根目录)

DispatcherServlet(前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处)截获请求后就通过控制器上@RequestMapping提供能的请求信息确定具体的处理方法。

1.1 请求参数、请求方法、请求头

@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数、请求头映射请求。他们之间是与的关系,联合使用可以使请求更加细化。

value:请求URL
method:请求方法RequestMethod(GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE)
param:请求参数

  • param1:表示请求必须包含param1这个请求参数
  • !param1:表示请求必须不能包含param1这个请求参数
  • param1 != value1:表示请求必须包含param1这个请求参数,但是其值不能等于value1
  • {“param1=value1”, “param2”}:请求必须包含param1和param2两个参数,param1必须等于value1

headers:请求头

1.2 模糊匹配

springmvc使用Ant风格资源地址进行模糊匹配
?:匹配一个字符
*:匹配任意字符
**:匹配多层路径

二、获取请求参数

Spring MVC 通过分析处理方法的签名,将HTTP请求信息绑定到处理方法的相应入参中。

2.1 @PathVariable映射URL绑定的占位符

带占位符的URL是SpringMVC3.0新增的功能,该功能是SpringMVC向REST目标挺近发展过程中具有里程碑的意义。
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL中的 {xxx} 占位符可以通过 @PathVariable(“xxx”) 绑定到操作方法中入参。

@RequestMapping("/delete/{id}")public String delete(@PathVariable("id") String id) {    System.out.println("id");    return "success";}

2.2 @RequestParam 绑定请求参数值

在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法。

  • value:参数名
  • required:是否必须,默认true。表示请求参数必须包含对应的参数,否则将抛出异常。
@RequestMapping("/handle")public String handle(@RequestParam(value="username") String username,        @RequestParam(value="age", required=false) int age) {    System.out.println(username);    return "success";}

2.3 @RequestHeader 绑定请求报头的属性值

请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@RequestHeader 即可将请求头中的属性值绑定到处理方法中入参。

@RequestMapping("/handle1")public String handle1(@RequestHeader("Accept-Encoding") String encoding,        @RequestHeader("Keep-Alive") long alive) {    return "success";}

2.4 @CookieValue 绑定请求中的Cookie值

@RequestMapping("/handle2")public String handle2(@CookieValue(value="JSESSIONID", required=false) String sessionId,        @RequestParam("age") int age) {    return "success";}

2.5 使用实体类(POJO)绑定请求参数

Spring MVC 会按请求参数名和 实体类属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:dept.deptId, dept.address.tel

@RequestMapping("/pojoParams")  public String pojoParams(User user){      System.out.println(user);      return "helloworld";  }  

2.6 使用ServletAPI入参

MVC 的Handler方法可以接受以下9种类型的ServletAPI入参

  • javax.servlet.ServletRequest
  • javax.servlet.ServletResponse
  • javax.servlet.http.HttpSession
  • java.security.Principal
  • java.util.Locale
  • java.io.InputStream
  • java.io.Reader
  • java.io.OutputStream
  • java.io.Writer
原创粉丝点击