在控制器的类定义及方法出定义出都可以标注 @RequestMapping:

  • 类定义处:提供初步的请求映射信息。相对于 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学习 -- 使用 @RequestMapping 映射请求的更多相关文章

  1. SpringMVC之使用 @RequestMapping 映射请求

    @RequestMapping注解 SpringMVC使用该注解让控制器知道可以处理哪些请求路径的,除了可以修饰方法,还可以修饰在类上. – 类定义处:提供初步的请求映射信息.相对于 WEB 应用的根 ...

  2. SpringMVC之使用requestMapping映射请求、映射参数、映射头

    1. 映射请求 作用:使用requestMapping可以指定处理器可以处理那些请求 地方:类和方法前面都可以 @requestMapping 类定义处: 提供初步的请求映射信息,相对于web应用的根 ...

  3. SpringMVC使用注解@RequestMapping映射请求

    pringMVC通过使用@RequestMapping注解,实现指定控制器可以处理哪些URL请求. 控制器的类定义及方法定义处都可以标注@RequestMapping: 类定义处:提供初步的请求映射信 ...

  4. SpringMVC听课笔记(三:使用@RequestMapping映射请求)

    1. Spring MVC使用 @RequestMapping 注解为控制器指定可以处理哪些URL请求 2. 标注点: --类定义处:提供初步的请求映射信息.相对于WEB应用的根目录 --方法处:提供 ...

  5. @RequestMapping映射请求,@PathVariable,@RequestParam,@RequestHeader的使用

    1.@RequestMapping Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求,在控制器的类定义及方法定义处都可标注. @RequestMa ...

  6. 用@RequestMapping映射请求

    DispatcherServlet接受一个web请求之后,将请求发送给@Controller注解声明的不同控制器类. 这个调度过程依赖控制器类及其处理程序方法中声明的各种@RequestMapping ...

  7. @RequestMapping映射请求

     1.SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求.   2.在控制器的类定义和方法定义处都可标注@RequestMapping   2.1 类定义处:提 ...

  8. SpringMVC 学习笔记(处理器映射器的配置)

    前端控制器(dispatchServlet) 在web.xml中配置前端控制器,在服务器启动时就被创建,用来对请求和响应进行接收 和 分发处理,其在配置时可以设置一个初始化参数,用来定位SpringM ...

  9. SpringMVC学习笔记一(请求流程和配置,启动项目)

    springmvc请求流程: 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.处理器映 ...

随机推荐

  1. java图片识别 [Tesseract-OCR]

    以下链接包含,安装包及程序运行需要的jar 包,中文资源包. 中文包使用方式:找到tessdata安装目录(我本地:C:\Program Files (x86)\Tesseract-OCR\tessd ...

  2. 可用率map处理

    total_data =[ {'event_current_dealer': '陈铁', 'id__count': 66}, {'event_current_dealer': '丁凯', 'id__c ...

  3. Qt Qwdget 汽车仪表知识点拆解6 自定义控件

    先贴上效果图,注意,没有写逻辑,都是乱动的 这里说一下控件自定义 图中标出的部分都是自定义的控件 这里如果我们有批量类似的功能,就可以使用自定义控件的方式,这里我已下面的自定义控件说一下,上面的在上一 ...

  4. 《python核心编程第二版》第5章习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符(a) 写一个函数,计算并返回两个数的乘 ...

  5. 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3

    孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...

  6. Oracle 11g 审计跟踪管理

    在Oracle11g之前,oracle数据库自带的审计功能是关闭的,考虑到性能和审计管理的复杂性,用户一般不打开审计功能.如果有审计要求,DBA会采用trigger来实现对DDL审计的方法来折中.例如 ...

  7. TF-IDF与主题模型 - NLP学习(3-2)

    分词(Tokenization) - NLP学习(1) N-grams模型.停顿词(stopwords)和标准化处理 - NLP学习(2) 文本向量化及词袋模型 - NLP学习(3-1) 在上一篇博文 ...

  8. 合规P2P平台成PE/VC新宠

    013年是互联网金融元年,余额宝.百发等掀起了大众理财的新一轮高潮.P2P平台作为互联网金融模式之一,也受到市场的重点关注-在部分平台不断爆出风险事件的同时,业内较为成熟的平台也正成为PE/VC的新宠 ...

  9. Codeforces Round #390 (Div. 2) E(bitset优化)

    题意就是一个给出2个字符矩阵,然后进行匹配,输出每个位置的匹配的结果 (超出的部分循环处理) 一种做法是使用fft,比较难写,所以没有写 这里使用一个暴力的做法,考虑到一共只出现26个字符 所以使用一 ...

  10. [洛谷P3413]SAC#1 - 萌数

    题目大意:求$[l,r](0\leqslant l<r< 10^{1001})$中存在长度至少为$2$的回文串的数字数 题解:数位$DP$,发现如果有回文串,若长度为偶数,一定有两个相同的 ...