博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二、@ResquestMapping
阅读量:4073 次
发布时间:2019-05-25

本文共 4850 字,大约阅读时间需要 16 分钟。

2.1使用 @RequestMapping 映射请求

  • Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
  • 在控制器的类定义及方法定义处都可标注
    @RequestMapping
    类定义处:提供初步的请求映射信息。相对于 WEB 应用的根目。
    方法处:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL 相对于WEB 应用的根目录
  • DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法。

2.1.1测试@ResquestMapping

SpringMVCTest.java

package com.atguigu.springmvc.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest {
private static final String SUCCESS="success"; @RequestMapping("/testRequestMapping") public String testRequestMapping() { System.out.println("testRequestMapping"); return SUCCESS; }}

2.1.2index.jsp中的写法

index.jsp

Test RequestMapping

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

  • @RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求
  • @RequestMapping 的 value、method、params 及 heads分别表示请求 URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
  • params 和 headers支持简单的表达式:
    – param1: 表示请求必须包含名为 param1 的请求参数
    – !param1: 表示请求不能包含名为 param1 的请求参数
    – param1 != value1: 表示请求包含名为 param1 的请求参数,但其值不能为 value1
    – {“param1=value1”, “param2”}: 请求必须包含名为 param1 和param2的两个请求参数数,且 param1 参数的值必须为 value1

2.2.1@RequestMapping中使用Method属性

SpringMVCTest.java

package com.atguigu.springmvc.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest {
private static final String SUCCESS="success"; @RequestMapping("/testRequestMapping") public String testRequestMapping() { System.out.println("testRequestMapping"); return SUCCESS; } //使用Method属性来指定请求方式 @RequestMapping(value="/testMethod",method=RequestMethod.POST) public String testMethod() { System.out.println("testMethod"); return SUCCESS; }}

2.2.2在index.jsp中测试

index.jsp

2.2.3@RequestMapping中指定params和heads属性

SpringMVCTest.java

package com.atguigu.springmvc.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest {
private static final String SUCCESS="success"; @RequestMapping("/testRequestMapping") public String testRequestMapping() { System.out.println("testRequestMapping"); return SUCCESS; } //使用Method属性来指定请求方式 @RequestMapping(value="/testMethod",method=RequestMethod.POST) public String testMethod() { System.out.println("testMethod"); return SUCCESS; } //可以使用params和headers来更加精确地映射请求,params和headers支持简单的表达式 @RequestMapping(value="testParamsAndHeaders", params={
"username","age!=10"}, headers={
"Accept-Language=zh-CN,zh;q=0.8"}) public String testParamsAndHeaders() { System.out.println("testParamsAndHeaders"); return SUCCESS; }}

2.2.4index.jsp中测试

index.jsp

testParamsAndHeaders

浏览器中:

http://localhost:8080/springmvc-1/springmvc/testParamsAndHeaders?username=zhangsan&age=11

2.3@RequestMapping支持Ant风格的URL

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/createUser**aa**、/user/createUser**bb **等 URL

2.3.1@RequestMapping中指定Ant格式的属性

SpringMVCTest.java

package com.atguigu.springmvc.handlers;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest {
private static final String SUCCESS="success"; @RequestMapping("/testRequestMapping") public String testRequestMapping() { System.out.println("testRequestMapping"); return SUCCESS; } //使用Method属性来指定请求方式 @RequestMapping(value="/testMethod",method=RequestMethod.POST) public String testMethod() { System.out.println("testMethod"); return SUCCESS; } //可以使用params和headers来更加精确地映射请求,params和headers支持简单的表达式 @RequestMapping(value="testParamsAndHeaders", params={
"username","age!=10"}, headers={
"Accept-Language=zh-CN,zh;q=0.8"}) public String testParamsAndHeaders() { System.out.println("testParamsAndHeaders"); return SUCCESS; } @RequestMapping("/testAntPath/*/abc") public String testAntPath() { System.out.println("testAntPath"); return SUCCESS; }}

2.3.2index.jsp中进行测试

index.jsp

TestAntPath

转载地址:http://gfkni.baihongyu.com/

你可能感兴趣的文章
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
分治法 动态规划法 贪心法 回溯法 小结
查看>>
《软件体系结构》 练习题
查看>>
《数据库系统概论》 第一章 绪论
查看>>
《数据库系统概论》 第二章 关系数据库
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
SQL语句(二)查询语句
查看>>
SQL语句(六) 自主存取控制
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>