SpringMVC中,如何处理请求是很重要的任务。请求映射都会使用@RequestMapping标注。其中,类上的标注相当于一个前缀,表示该处理器是处理同一类请求;方法上的标注则更加细化。如,类的标注可能是“user”,表示全部都是与用户相关的操作;具体到方法可能有“create”“update”“delete”等,分别表示对用户进行哪一类操作。

package cn.javass.chapter6.web.controller;
@Controller
@RequestMapping(value="/user") //①处理器的通用映射前缀
public class HelloWorldController2 {
@RequestMapping(value = "/hello2") //②相对于①处的映射进行窄化
public ModelAndView helloWorld() {
//省略实现
}
}

现在就来总结一下请求映射有哪些。

一、URL路径映射

这种映射涉及的属性只有value。

@RequestMapping(value={"/test1", "/user/create"}) //或,表示多个路径都可以映射到同一个处理方法
@RequestMapping(value="/users/{userId}/topics/{topicId}") //也可以使用大括号,表示变量占位符
@RequestMapping(value="/product?") //可匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”
@RequestMapping(value="/products/**/{productId}") //可匹配“/products/abc/abc/123”或“/products/123”
@RequestMapping(value="/products/{categoryCode:\\d+}-{pageNumber:\\d+}") //支持正则表达式

二、请求方法映射限定

不仅要提供value属性,还要提供method属性。

@RequestMapping(value="/create", method = RequestMethod.GET) //表示可处理匹配“/create”且请求方法为“GET”的请求
@RequestMapping(value="/create", method = RequestMethod.POST) //表示可处理匹配“/create”且请求方法为“POST”的请求

一般浏览器仅支持GET和POST类型,其他如PUT、DELETE等需要进行模拟。

三、请求参数映射限定

需要提供params属性和method属性。

以下面的控制器为例,

@Controller
@RequestMapping("/parameter1") //①处理器的通用映射前缀
public class RequestParameterController1 {
// Something...
}
@RequestMapping(params="create", method=RequestMethod.GET) //表示请求中有“create”的参数名且请求方法为“GET”即可匹配,
如可匹配的请求URL“http://×××/parameter1?create” @RequestMapping(params="create", method=RequestMethod.POST) //表示请求中有“create”的参数名且请求方法为“POST”即可匹配 @RequestMapping(params="!create", method=RequestMethod.GET) //表示请求中没有“create”参数名且请求方法为“GET”即可匹配,
如可匹配的请求URL“http://×××/parameter1?abc” @RequestMapping(params="submitFlag=create", method=RequestMethod.GET) //表示请求中有“submitFlag=create”请求参数且请求方法为“GET”即可匹配,
如请求URL为http://×××/parameter2?submitFlag=create @RequestMapping(params="submitFlag=create", method=RequestMethod.POST) //表示请求中有“submitFlag=create”请求参数且请求方法为“POST”即可匹配 @RequestMapping(params="submitFlag=create", method=RequestMethod.GET) //表示请求中有“submitFlag=create”请求参数且请求方法为“GET”即可匹配,
如请求URL为http://×××/parameter2?submitFlag=create

与value中的参数组合表示“或”不同,params参数组合表示“且”,即:

@RequestMapping(params={"test1", "test2=create"}) //表示请求中的有“test1”参数名 且 有“test2=create”参数即可匹配,如可匹配的请求URL“http://×××/parameter3?test1&test2=create

SpringMVC——请求映射的更多相关文章

  1. SpringMVC请求映射handler源码解读

    请求映射源码 首先看一张请求完整流转图(这里感谢博客园上这位大神的图,博客地址我忘记了): 前台发送给后台的访问请求是如何找到对应的控制器映射并执行后续的后台操作呢,其核心为DispatcherSer ...

  2. SpringMVC 请求映射注解

    @GetMapping: 处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value = “/get/{id}”, method = RequestMet ...

  3. springmvc学习(二)——使用RequestMapper请求映射

    本次内容是@RequestMapping,后面会有实例代码 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求在控制器的类定义及方法定义处都可标注@ ...

  4. SpringMVC:学习笔记(2)——RequestMapping及请求映射

    SpringMVC--RequestMapping及请求映射 @RequestMapping 说明 Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请 ...

  5. SpringMVC中映射路径的用法之请求限制、命名空间

    SpringMVC中映射路径的请求限制 什么是SpringMVC请求限制? 在SpringMVC中,支持对请求的设置.如果不满足限制条件的话,就不让请求访问执行方法,这样可以大大提高执行方法 的安全性 ...

  6. 【spring源码学习】springMVC之映射,拦截器解析,请求数据注入解析,DispatcherServlet执行过程

    [一]springMVC之url和bean映射原理和源码解析 映射基本过程 (1)springMVC配置映射,需要在xml配置文件中配置<mvc:annotation-driven >  ...

  7. 【spring springmvc】springmvc使用注解声明控制器与请求映射

    目录 概述 壹:注解说明 贰:实现注解声明控制器与请求映射 一:使用controller 二:配置包扫描与视图解析器 1.配置包扫描 2.配置试图解析器 三:配置部署描述符 1.读取spring-mv ...

  8. 详解SpringMVC请求的时候是如何找到正确的Controller[附带源码分析]

    目录 前言 源码分析 重要接口介绍 SpringMVC初始化的时候做了什么 HandlerExecutionChain的获取 实例 资源文件映射 总结 参考资料 前言 SpringMVC是目前主流的W ...

  9. SpringMVC核心——映射问题

    一.SpringMVC 使用 RequestMapping 来解决映射问题. 二.在学习 RequestMapping 之前,首先来看一张图. 这张图表示的是发送一次 http 请求时,所包含的请求 ...

随机推荐

  1. Python-一些实用的函数

    一,返回值为bool类型的函数 1.any()函数 any(iterable)->bool 当迭代器中有一个是Ture,则返回Ture:若interable=NUll,则返回False. > ...

  2. crash部分命令用法

    Set set [pid | taskp | [-c cpu] | -p] | [crash_variable [setting]] | -v 1.设置要显示的内容,内容一般以进程为单位. Set p ...

  3. hibernate 使用 hibernate tool 生成配置文件和实体类

    安装Hibernate插件 下载所需的Hibernatetools  http://www.hibernate.org/6.html 将下载得到的文件解压得到的features和plugins文件夹, ...

  4. Unity 总裁 John Riccitiello 发话:VR足以匹敌互联网

    在2017年Vision Summit大会的开幕演讲中,Unity首席执行官John Riccitiello向观众通报了开发人员如何利用Oculus,HTC等品牌创造的机遇来打造虚拟现实(VR)行业, ...

  5. ObjectARX自定义实体的最近点和垂点捕捉算法

    最近点用pickPoint来计算,垂点用lastPoint计算. 一般AcDbCurve类可以用AcGe类的 getClosestPointTo 来实现计算需要的点值. 下面是代码示例: case A ...

  6. Python简要学习笔记

    1.搭建学习环境 推荐ActivePython,虽然此乃为商业产品,却是一个有自由软件版权保证的完善的Python开发环境,关键是文档以及相关模块的预设都非常齐备. ActivePython下载地址: ...

  7. 高性能linux服务器内核调优

    高性能linux服务器内核调优 首先,介绍一下两个命令1.dmesg 打印系统信息.有很多同学们服务器出现问题,看了程序日志,发现没啥有用信息,还是毫无解决头绪,这时候,你就需要查看系统内核抛出的异常 ...

  8. 封装GCD以及介绍如何使用

    研究GCD有一段时间,翻译了多篇文章,找了很多的资料,看了很多官方文档,看起来很难,实际上很简单,本人一一进行讲解怎么使用. 支持ARC以及非ARC,无论在ARC环境还是在非ARC环境,都需要调用di ...

  9. hdu 1254 推箱子(搜索)

    我写的第一道感觉比较难的搜索 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1254 首先要推箱子的话要满足人能够在箱子旁边,而且人的对面也是可通的. ...

  10. NIO Socket编程实例

    1.阻塞模式实例 NIOUtil类,用来通过SOcket获取BufferedReader和PrintWriter. package IO; import java.io.BufferedReader; ...