springmvc @RequestMapping映射请求
来源:互联网 发布:道教地狱知乎 编辑:程序博客网 时间:2024/05/21 21:58
springmvc 使用@RequestMapping来拦截路径,将路径拦截到某个controller某个方法进行具体处理,@RequestMapping可以在类级别上注解以及方法级别上注解
@Controller@RequestMapping("/task")public class TaskController { @RequestMapping(value = { "", "/" }) public String whatPage() { return "task/task" ; } @RequestMapping("/mvcTest1") public void mvcTest1( HttpServletRequest req, HttpServletResponse res, @CookieValue("JSESSIONID") String sessionId, @RequestParam(value = "param", required = false) String param, @RequestHeader(value = "Accept-Encoding", required = false) String encoding, @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") Date date , Integer type, @Validated Task task ) { }}
看看@RequestMapping注解源码
@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpublic @interface RequestMapping { String[] value() default {}; RequestMethod[] method() default {}; String[] params() default {}; String[] headers() default {}; String[] consumes() default {}; String[] produces() default {};}
拦截多个路径
@RequestMapping不写具体key时候,默认是按key为value拦截且拦截一个,如果你想拦截多个路径,可以这样子配置
@RequestMapping(value = { "", "/" }) public String whatPage() { return "task/task" ; }
利用{…}匹配变量,利用@PathVariable 可以将变量绑定在方法入参中获取
@RequestMapping("/pets/{petId}") public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { // ... }
利用正则表达式来匹配路径,语法为{varName:regex},varName是变量,regex是具体的正则匹配,可以用@PathVariable将varName绑定在方法入参中,然后获取,例如下面的例子这样子请求”/spring-web/spring-web-3.0.5.jar”
@RequestMapping("/spring-web/{symbolicName:[a-z-]}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]}")public void handle(@PathVariable String version, @PathVariable String extension) { // ...}
支持Ant的rest风格
/** *匹配如/task/aaa/saveTask,/task/bbb/saveTask */@RequestMapping("/task/*/saveTask")public void saveTask1() { // ...}/** *匹配如/task/aaa/bbb/saveTask,/task/aaa/bbb/ccc/saveTask */@RequestMapping("/task/**/saveTasks")public void saveTask2() { // ...}/** *匹配如/task/saveTask1,/task/saveTask2 */@RequestMapping("/task/saveTasks??")public void saveTask3() { // ...}
Ant的rest风格和{…}模式混合匹配
@RequestMapping("/task/**/findTaskById/{taskId}")public void saveTask4(@PathVariable Long taskId ) { // ...}
后缀模式匹配
/** * 获取任务栏 */@RequestMapping("/findTaskList")public void findTaskList(@PathVariable Long taskId ) { // ...}
springmvc在配置”/findTaskList”这样子的路径时,如果用户路径是”/findTaskList/”,”/findTaskList.xml”,”/findTaskList.json”都会进入到findTaskList方法中。可以在配置文件中配置后缀
<!-- 注解驱动 --> <mvc:annotation-driven > <mvc:path-matching suffix-pattern="false" trailing-slash="false" /> </mvc:annotation-driven>
suffix-pattern匹配后缀,如.xml,.json默认是true,trailing-slash匹配”/”,如“/findTaskList/”默认是true。
矩阵匹配,可以匹配 URI RFC 398 标准的路径,如/cars;color=red;year=2012”的key和value类型的路径,需要在配置中打开矩阵请求允许
// GET /pets/42;q=11;r=22@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET)public void findPet(@PathVariable String petId, @MatrixVariable int q) { // petId == 42 // q == 11}//在dispatch-content.xml配置打开允许矩阵请求格式<mvc:annotation-driven enable-matrix-variables="true"></mvc:annotation-driven>
其他参数匹配,method ,params,headers,consumes,produces
匹配method ,能按照请求方法匹配,如POST,GET,PUT等
@RequestMapping(value = "/saveTask", params = RequestMethod.POST)public void saveTask(Task task) { // ...}
用params匹配具体的参数,以key=value或者key!=value存在
@RequestMapping(value = "/findTaskByTaskName", params="taskName = mytask")public void findTaskByTaskName(String taskName) { // ...}@RequestMapping(value = "/findTaskByTaskName", params="taskName != mytask")public void findTaskByTaskName(String taskName) { // ...}
用headers匹配请求的头部信息,以key = value或者key != value存在
@RequestMapping(value = "/findTaskByTaskName", headers="Accept-Charset=iso-8859-1")public void findTaskByTaskName(String taskName) { // ...}
用consumes匹配请求头部的Content-Type
@RequestMapping(value = "/findTaskByTaskName", consumes="application/json")public void findTaskByTaskName(String taskName) { // ...}
用produces匹配请求头部的accpet
@RequestMapping(value = "/findTaskByTaskName", produces="application/json")public void findTaskByTaskName(String taskName) { // ...}
- springmvc @RequestMapping映射请求
- 10003---SpringMVC 使用@RequestMapping映射请求
- SpringMVC入门(二)--使用@RequestMapping映射请求
- SpringMVC使用注解@RequestMapping映射请求
- SpringMVC-2 使用@RequestMapping映射请求
- SpringMVC源码(十)RequestMapping请求映射
- SpringMVC学习(二) @RequestMapping映射请求
- 【学习】springmvc之@RequestMapping映射请求
- SpringMVC学习(2):使用@RequestMapping映射请求方式
- 使用RequestMapping映射请求
- 使用 @RequestMapping 映射请求
- 使用 @RequestMapping 映射请求
- 使用@RequestMapping映射请求
- 使用@RequestMapping 映射请求
- 请求地址映射(@RequestMapping)
- springmvc_2_使用 @RequestMapping 映射请求
- 请求地址映射(@RequestMapping)
- SpringMVC笔记系列(2)——@RequestMapping请求映射物理视图解析
- 【day0411 C++】字符串流istringstream和ostringstream的用法
- OpenGL之坐标转换(好文-清晰版)
- OpenCV中cvADDS()为啥第二个参数要是CvScalar类型?掩码mask=NULL又是何意?
- Caravel一个数据可视化平台
- LLDB 崩溃调试
- springmvc @RequestMapping映射请求
- iOS动态计算Label的宽高
- C++中如何在main函数体为空的情况打印出字符串"GeeksforGeeks"
- SVGALib
- POJ1017-Packets
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- 从二叉树的前序遍历序列和中序遍历序列重构出二叉树
- java 为什么匿名内部类和局部内部类只能访问final变量
- MTT PRocess