SpringMVC学习 -- 使用 @RequestMapping 映射请求
2017-03-09 08:54
525 查看
在控制器的类定义及方法出定义出都可以标注 @RequestMapping:
类定义处:提供初步的请求映射信息。相对于 Web 应用的根目录。
方法定义出:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping , 则方法定义处标记的 URL 相对于 Web 应用的根目录。
DispatcherServlet 截获请求后 , 就通过控制器上 @RequestMapping 提供的映射信息确定请求所对应的处理方法。
web.xml
dispatcher-servlet.xml
TestRequestMapping.java
映射请求参数、请求方式或请求头
@RequestMapping 的 value , method , params 及 headers 分别表示请求 URL , 请求方式 , 请求参数及请求头的映射条件 , 联合使用多个条件可让请求映射更加精确化。
method 请求方式常用有四种:
method = RequestMethod.POST
method = RequestMethod.GET
method = RequestMethod.PUT
method = RequestMethod.DELETE
params 和 headers 支持简单的表达式:
param:表示请求必须包含名为 param 的请求参数。
!param:表示请求不能包含名为 param 的请求参数。
param != value: 表示请求包含名为 param 的请求参数 , 但其值不能为 value。
params 可以有多个参数 , 用逗号隔开。示例:params = {"username", "age!=20"}
Ant 风格资源地址支持3种匹配符:
?:匹配文件名中的一个字符。
*:匹配文件名中的任意字符。
**:匹配多层路径。
@PathVariable 映射 URL 绑定占位符:
带占位符的 URL 是 Spring3.0 新增的功能 , 该功能在 SpringMVC 的 REST 目标挺进发展过程中具有里程碑的意义。
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的{xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。
注意:@PathVariable("xxx") 中的 xxx 必须与占位符 {xxx} 中的 xxx 相同。
类定义处:提供初步的请求映射信息。相对于 Web 应用的根目录。
方法定义出:提供进一步的细分映射信息。相对于类定义处的 URL。若类定义处未标注 @RequestMapping , 则方法定义处标记的 URL 相对于 Web 应用的根目录。
DispatcherServlet 截获请求后 , 就通过控制器上 @RequestMapping 提供的映射信息确定请求所对应的处理方法。
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描自定义包 --> <context:component-scan base-package="com.itdoc.springmvc"/> <!-- 配置试图解析器: 把 Controller 返回值解析成实际的物理视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
TestRequestMapping.java
package com.itdoc.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @BLOG http://www.cnblogs.com/goodcheap * @DESCRIBE RequestMapping 测试 * @AUTHOR WángChéngDá * @DATE 2017-03-08 14:30 */ @Controller @RequestMapping("/springmvc") public class TestRequestMapping { private final static String SUCCESS = "success"; /** * 1.@RequestMapping 除了修饰方法还可以修饰类。 * 2.修饰类和修饰方法 * 1) 修饰类: 提供初步的请求映射信息, 相对于 WEB 应用的根目录。 * 2) 修饰方法: 提供进一步细化的请求映射信息, 相对于修饰类处的 URL。 * 若修饰类处未标注 @RequestMapping, 则修饰方法处的 URL 相对于 WEB 应用的根目录。 */ @RequestMapping("/testreqmap") public String testReqMap() { System.out.println("I am TestRequestMapping's testReqMap method..."); return SUCCESS; } }
映射请求参数、请求方式或请求头
@RequestMapping 的 value , method , params 及 headers 分别表示请求 URL , 请求方式 , 请求参数及请求头的映射条件 , 联合使用多个条件可让请求映射更加精确化。
method 请求方式常用有四种:
method = RequestMethod.POST
method = RequestMethod.GET
method = RequestMethod.PUT
method = RequestMethod.DELETE
package com.itdoc.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @BLOG http://www.cnblogs.com/goodcheap * @DESCRIBE RequestMapping 测试 * @AUTHOR WángChéngDá * @DATE 2017-03-08 14:30 */ @Controller @RequestMapping("/springmvc") public class TestRequestMapping { private final static String SUCCESS = "success"; /** * 使用 method 属性来制定请求方式。 * * @return */ @RequestMapping(value = "/testMethod", method = RequestMethod.POST) public String testMethod() { System.out.println("I am TestRequestMapping's testMethod method..."); return SUCCESS; } }
params 和 headers 支持简单的表达式:
param:表示请求必须包含名为 param 的请求参数。
!param:表示请求不能包含名为 param 的请求参数。
param != value: 表示请求包含名为 param 的请求参数 , 但其值不能为 value。
params 可以有多个参数 , 用逗号隔开。示例:params = {"username", "age!=20"}
package com.itdoc.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @BLOG http://www.cnblogs.com/goodcheap * @DESCRIBE RequestMapping 测试 * @AUTHOR WángChéngDá * @DATE 2017-03-08 14:30 */ @Controller @RequestMapping("/springmvc") public class TestRequestMapping { private final static String SUCCESS = "success"; /** * 可以使用 params 和 headers 来更加精确的映射请求, params 和 headers 支持简单的表达式。 * @return */ @RequestMapping(value = "testParamsAndHeaders", params = {"username", "age!=20"}, headers = {"Accept-Language=zh-CN,zh;q=0.8"}) public String testParamsAndHeaders() { System.out.println("I am TestRequestMapping's testParamsAndHeaders method..."); return SUCCESS; } }
Ant 风格资源地址支持3种匹配符:
?:匹配文件名中的一个字符。
*:匹配文件名中的任意字符。
**:匹配多层路径。
package com.itdoc.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @BLOG http://www.cnblogs.com/goodcheap * @DESCRIBE RequestMapping 测试 * @AUTHOR WángChéngDá * @DATE 2017-03-08 14:30 */ @Controller @RequestMapping("/springmvc") public class TestRequestMapping { private final static String SUCCESS = "success"; @RequestMapping("/testAndPath/*/abc") public String testAndPath() { System.out.println("I am TestRequestMapping's testAntPath method..."); return SUCCESS; } }
@PathVariable 映射 URL 绑定占位符:
带占位符的 URL 是 Spring3.0 新增的功能 , 该功能在 SpringMVC 的 REST 目标挺进发展过程中具有里程碑的意义。
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的{xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。
注意:@PathVariable("xxx") 中的 xxx 必须与占位符 {xxx} 中的 xxx 相同。
package com.itdoc.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @BLOG http://www.cnblogs.com/goodcheap * @DESCRIBE RequestMapping 测试 * @AUTHOR WángChéngDá * @DATE 2017-03-08 14:30 */ @Controller @RequestMapping("/springmvc") public class TestRequestMapping { private final static String SUCCESS = "success"; /** * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中。 * @param id * @return */ @RequestMapping("/testPathVariable/{id}") public String testPathVariable(@PathVariable("id") Integer id) { System.out.println("I am TestRequestMapping's testPathVariable method...\t id=" + id); return SUCCESS; } }
相关文章推荐
- SpringMVC学习(2):使用@RequestMapping映射请求方式
- 10003---SpringMVC 使用@RequestMapping映射请求
- springmvc_1_使用 @RequestMapping 映射请求&映射请求参数 & 请求头
- springmvc_2_使用 @RequestMapping 映射请求
- SpringMVC学习(二) @RequestMapping映射请求
- SpringMVC学习(3):使用@PathVariable映射请求参数
- springmvc学习(二)——使用RequestMapper请求映射
- springmvc @RequestMapping映射请求
- 使用@RequestMapping映射请求路径
- 使用 @RequestMapping 来映射 Request 请求与处理器
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
- SpringMVC 学习系列 (3) 之 URL请求到Action的映射规则
- SpringMVC:学习笔记(2)——RequestMapping及请求映射
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
- SpringMVC 学习系列 (3) 之 URL请求到Action的映射规则
- [置顶] 使用 @RequestMapping 映射请求
- 【SpringMVC】SpringMVC系列2之@RequestMapping 映射约束请求