码迷,mamicode.com
首页 > 移动开发 > 详细

Spring MVC - 02 RequestMapping映射请求

时间:2018-10-20 18:30:19      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:return   span   info   应用   orm   哪些   mit   nal   cal   

使用 @RequestMapping 映射请求

1.SpringMVC 使用@RequestMapping 注解为 控制器 指定可以处理哪些URL 请求

2. 在控制器的 类定义 及 方法定义处 都可以标注@RequestMapping

类定义处: 提供初步的请求映射信息。 相对于 WEB 应用的根目录

方法处: 提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注 @RequestMapping,则方法

处标记的URL 相对于WEB 应用的根目录

 

3.DispatcherServlet截取请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。

 

 

@Controller
public class SpringMVCTest {
    public static final String SUCCESS = "success";

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

<a href="testRequestMapping">Test RequestMapping</a>

http://localhost:8080/testRequestMapping    

 

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

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

<a href="springmvc/testRequestMapping">Test RequestMapping</a>

http://localhost:8080/springmvc/testRequestMapping  

 

映射请求参数、请求方法或请求头

 

@RequestMapping 除了可以使用 请求URL 映射请求 外,还可以使用 请求方法、请求参数 及 请求头映射请求

 

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

 

params 和 headers 支持简单的表达式

- param1:表示请求必须包含名为 param1的请求参数

- !param1:表示请求不能包含名为 param1的请求参数

- param1!=value1:表示请求包含名为 param1的请求参数,但其值不能为 value1

- {“param1=value1”,”param2”}:表示请求必须包含名为 param1 和 param2的两个请求参数,且param1参数的值必须为 value1

 

    /**
     * 使用 method 属性来指定请求方式
     * @return
     */
    @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
    public String testMethod(){
        System.out.println("testMethod");
        return SUCCESS;
    }

 

<a href="springmvc/testMethod">Test Method</a><br/>

技术分享图片

 

 

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

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

 

<a href="springmvc/testParamsAndHeaders?username=sun&age=10">Test ParamsAndHeaders</a><br/>

报错:
20-Oct-2018 16:39:22.796 警告 [catalina-exec-1] org.springframework.web.servlet.PageNotFound.handleNoSuchRequestHandlingMethod No matching handler method found for servlet request:
path ‘/springmvc/testParamsAndHeaders‘, method ‘GET‘, parameters map[‘username‘ -> array<String>[‘sun‘], ‘age‘ -> array<String>[‘10‘]]

修改age=11 后访问正常

技术分享图片

 

设置 headers 

HTTP 协议报文格式

技术分享图片

 

    @RequestMapping(value = "/testParamsAndHeaders", params = {"username", "age!=10"}, headers = {"Accept-Language=zh-CN,zh;q=0.9"})
    public String testParamsAndHeaders(){
        System.out.println("testParamsAndHeaders");
        return SUCCESS;
    }

IE 无法访问, Chrome 可以访问

 技术分享图片

 

Ant 风格资源地址

Ant 风格资源地址 支持 3种匹配符:

? : 匹配文件名中的一个字符

* : 匹配文件名中的任意字符

**: ** 匹配多层路径

 

@RequestMapping 支持 Ant 风格的URL:

/user/*/createUser: 匹配 /user/aaa/createUser 、 /user/bbb/createUser等URL

/user/**/createUser: 匹配 /user/createUser 、 /user/aaa/bbb/createUser等URL

/user/createUser??: 匹配 /user/createUserAA 、 /user/createUserBB等URL

@RequestMapping("/testAntPath/*/abc")
public String testAntPath(){
  System.out.println("testAntPath");
  return SUCCESS;
}
<a href="/springmvc/testAntPath/mmm/abc">Test AntPath</a><br/><br/>

技术分享图片

 

 

@ PathVariable 映射 URL 绑定的占位符

带占位符的 URL 是 Spring 3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑式的意义。

 

通过 @ PathVariable 可以将URL 中占位符 参数绑定到 控制器 处理方法的入参中:

URL 中的 {xxx} 占位符可以通过 @ PathVariable(“xxx”) 绑定到操作方法的入参中。

 

    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println("testPathVariable: " + id);
        return SUCCESS;
    }

 

<a href="/springmvc/testPathVariable/1">Test PathVariable</a><br/><br/>

技术分享图片

Console:   testPathVariable: 1




Spring MVC - 02 RequestMapping映射请求

标签:return   span   info   应用   orm   哪些   mit   nal   cal   

原文地址:https://www.cnblogs.com/kingdomer/p/9822208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!