Springmvc4.x笔记之3.RequestMapping

Spring MVC使用@RequestMapping注解为控制器指定可以处理哪些url请求。
@RequestMapping标注出url,它可以标记在类上也可以标记在方法上。

  1. 标记在类上,提供初步的请求映射信息。这个URL相对于WEB应用的根目录。
  2. 标记在方法上,提供进一步的细分映射信息。相对于类定义处的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,那么还是会响应的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值