RequestMapping专题
Posted 王小特
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RequestMapping专题相关的知识,希望对你有一定的参考价值。
1、springMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求
- DispatcherServlet截获请求后就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法
- @RequestMapping不仅可以修饰方法还可以修饰类
1)类定义处:提供初步的请求映射信息,相对于web应用的根目录
2)方法定义处:提供进一步的细分映射信息,相对于类定义处的URL,若类定义处未标记@RequestMapping,则方法标记的URL相对于WEB应用的根目录
1)修饰方法
1 package com.atguigu.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 @Controller //这样标识后HelloWorld成为控制器,在springmvc叫做handler处理器或请求处理器 7 public class HelloWorld { 8 /** 9 * 1、使用@RequestMapping注解来映射请求的URL 10 * 2、返回值会通过视图解析器解析为实际的物理视图:对于InternalResourceViewResolver视图解析器,会做如下解析: 11 * 通过prefix+returnvel+后缀这样的方式得到实际的物理视图,然后转发 12 * /WEB-INF/views/success.jsp 13 * @return 14 */ 15 @RequestMapping("/helloworld")//映射请求 16 public String hello() { 17 System.out.println("HelloWorld"); 18 return "success"; 19 } 20 }
实现代码同HelloWorld实例。
2)修饰类
1 package com.atguigu.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 @RequestMapping("/springmvc") 7 @Controller 8 public class SpringMVCTest { 9 private static final String SUCCESS = "success"; 10 11 @RequestMapping("/testRequestMapping") 12 public String testRequestMapping() { 13 System.out.println("testRequestMapping"); 14 return SUCCESS; 15 } 16 }
3)index.xml改为
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <!-- 超链接 --> 11 <a href="/springmvc/testRequestMapping">TestRequestMapping</a> 12 <!-- <br><br> <a href="/helloworld">HelloWorld</a> --> 13 </body> 14 </html>
2、 RequestMapping的请求方式(联合多个条件可以让请求映射更加精确化)
请求URL:value
请求方法:method
请求参数:params(了解)
请求头:heads(了解)
- 举例:method(常用)
1 package com.atguigu.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 7 @RequestMapping("/springmvc") 8 @Controller 9 public class SpringMVCTest { 10 private static final String SUCCESS = "success"; 11 /** 12 * 使用method属性来指定请求方式 13 */ 14 @RequestMapping(value="/testMethod",method=RequestMethod.POST) 15 public String testMethod(){ 16 System.out.println("testMethod"); 17 return SUCCESS; 18 } 19 }
index.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <!-- 超链接 --> 11 <form action="springmvc/testMethod" method="POST"> <input 12 type="submit" value="submit"></form> 13 <a href="springmvc/testMethod">TestMethod</a> 14 <!-- <br><br> <a href="/helloworld">HelloWorld</a> --> 15 </body> 16 </html>
- 举例params
1 package com.atguigu.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 7 @RequestMapping("/springmvc") 8 @Controller 9 public class SpringMVCTest { 10 private static final String SUCCESS = "success"; 11 /** 12 * 了解:可以使用params和headers来更加精确的映射请求,params和headers支持简单的表达式 13 */ 14 @RequestMapping(value="testParamsAndHeaders", 15 params={"username","age!=10"}) 16 public String testParamsAndHeaders(){ 17 System.out.println("testParamsAndHeaders"); 18 return SUCCESS; 19 } 20 }
index.jsp文件
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <!-- 超链接 --> 11 12 <a href="springmvc/testParamsAndHeaders?username=atguigu&age=10">Test ParamsAndHeaders</a> 13 </body> 14 </html>
- 举例headers
1 package com.atguigu.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6 7 @RequestMapping("/springmvc") 8 @Controller 9 public class SpringMVCTest { 10 private static final String SUCCESS = "success"; 11 /** 12 * 了解:可以使用params和headers来更加精确的映射请求,params和headers支持简单的表达式 13 */ 14 @RequestMapping(value="testParamsAndHeaders", 15 params={"username","age!=10"},headers={"Accept-Language=zh-CN,zh;q=0.8"}) 16 public String testParamsAndHeaders(){ 17 System.out.println("testParamsAndHeaders"); 18 return SUCCESS; 19 } 20 }
index.jsp与上述相同
3、@RequestMapping映射请求支持Ant风格资源地址3中匹配符:(了解)
- ?:匹配文件名中的一个字符
- * :匹配文件名中的任意字符
- **:**匹配多层路径
1 @RequestMapping("/springmvc") 2 @Controller 3 public class SpringMVCTest { 4 private static final String SUCCESS = "success"; 5 @RequestMapping("/testAntPath/*/abc") 6 public String testAntPath(){ 7 System.out.println("testAntPath"); 8 return SUCCESS; 9 }
以上是关于RequestMapping专题的主要内容,如果未能解决你的问题,请参考以下文章
springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段