您的位置:首页 > 移动开发

Springmvc4.x笔记之3.RequestMapping

2015-11-08 21:51 495 查看
Spring MVC使用
@RequestMapping
注解为
控制器
指定可以处理哪些url请求。

@RequestMapping标注出url,它可以标记在类上也可以标记在方法上。

标记在类上,提供
初步的
请求映射信息。这个URL相对于WEB应用的根目录。

标记在方法上,提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。

在进行URL请求的时候,必然是请求到方法上的映射,因为类上的映射最多只能为方法映射的URL再增加上一部分相对请求路径。也就是说,类上的URL+方法上的URL=相对于应用的地址。

DispatcherServlet根据注解上url和请求的url进行匹配,匹配上则调用相应的方法进行响应。

如:

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
private static final String SUCCESS = "success";

@RequestMapping("/testRequestMapping")
public String testRequestMapping()
{
System.out.println("testRequestMapping");
return SUCCESS;
}
}


这个方法相对于web应用的路径是:/springmvc/testRequestMapping

若web应用的路径是:http://localhost:8080/springmvc

则,该请求的完整路径是:

http://localhost:8080/springmvc/springmvc/testRequestMapping

在使用@RequestMapping注解的时候,只给出一个值的时候,实际上是赋值给了value。

可以在@RequestMapping注解中指定请求类型参数,控制该方法处理哪种请求:

@RequestMapping(value="/testMethod",method= RequestMethod.POST)
public String testMethod()
{
System.out.println("testMethod");
return SUCCESS;
}


用method属性指定请求类型,请求类型在

org.springframework.web.bind.annotation.RequestMethod
中定义:

public enum RequestMethod {
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}


它是个枚举类型。

以上通过method设定了方法响应的请求的类型为POST,这个时候如果以GET方式发起请求,那么该请求将不会被响应:



而POST请求需要以表单提交的时候才能被更改:

<form action="springmvc/testMethod" method="post">
<input type="submit" value="submit"/>
</form>


@RequestMapping的value、method、params、和headers分别表示
请求URL
请求方法
请求参数
请求头
的映射条件,他们之间是
的关系,联合使用多个条件可让请求映射更加精确化。

params和headers支持简单的表达式:

@RequestMapping(value="/testParamsAndHeaders",params = {"username","age!=10"})
public String testParamsAndHeaders()
{
System.out.println("testParamsAndHeaders");
return SUCCESS;
}


params = {“username”,”age!=10”}: params接受一个数组为参数,数组内容是对请求参数的限制,

“username”:表示请求参数中必须要有username,否则不会响应请求。

“age!=10”: 表示请求参数中的age必须不能等于10,否则不会响应请求,而如果没有age,那么还是会响应的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: