本文以一个简单的小例子,简述SpringMVC开发中RequestMapping的相关应用,仅供学习分享使用,如有不足之处,还请指正。

什么是RequestMapping?

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping的常见用法

1. RequestMapping默认值

如下所示:默认属性为value,即默认映射路径

 /**
* 默认值,即为value对应的值
* @RequestMapping("Mapping01")
* @return
*/
@RequestMapping("/Mapping01")
public ModelAndView Mapping01(){
System.out.println("Mapping01被调用了。。。。");
ModelAndView mav=new ModelAndView();
mav.addObject("msg", "HelloWorld,HelloSpringMVC!!!");
//mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
mav.setViewName("HelloWorld");
return mav;
}

2. ReqeustMapping的value和method属性

value表示映射的路径,是数组类型,可以映射多个路径,method表示前端请求的方式,如下所示:表示两个路径均可访问,且支持GET,POST两种方式访问。

 /**
* value是一个数组,可以指定不同的路径
* method也是一个数组,可以指定不同的访问方式
* @return
*/
@RequestMapping(value={"/Mapping02","Mapping0B"},method={RequestMethod.GET,RequestMethod.POST})
public ModelAndView Mapping02(){
System.out.println("Mapping02被调用了。。。。");
ModelAndView mav=new ModelAndView();
mav.addObject("msg", "HelloWorld,HelloSpringMVC!!!");
//mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
mav.setViewName("HelloWorld");
return mav;
}

3. RequestMapping中的params

params表示访问能够获取的参数,如下所示:表示支持GET方式访问,且必须有uname参数才可以

 /**
* value指定访问的路径,method指定访问的方式必须是GET方式
* 且参数中必须有一个uname
* @return
*/
@RequestMapping(value="/Mapping03",method=RequestMethod.GET,params="uname")
public ModelAndView Mapping03(String uname){
System.out.println("Mapping03被调用了。。。。");
ModelAndView mav=new ModelAndView();
mav.addObject("msg", uname+">>>>>HelloWorld,HelloSpringMVC!!!");
//mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
mav.setViewName("HelloWorld");
return mav;
}

如下所示:表示访问路径中必须有uname和uage两个参数,且uage的值必须等于13才可以访问

 /**
* value指定访问的路径,method指定访问的方式必须是GET方式
* 且参数中必须有一个uname,和uage,且uage必须等于13
* @return
*/
@RequestMapping(value="/Mapping04",method=RequestMethod.GET,params={"uname","uage=13"})
public ModelAndView Mapping04(String uname,int uage){
System.out.println("Mapping04被调用了。。。。");
System.out.println("uname="+uname+" , uage="+uage);
ModelAndView mav=new ModelAndView();
mav.addObject("msg", uname+">>>>>HelloWorld,HelloSpringMVC!!!");
//mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
mav.setViewName("HelloWorld");
return mav;
}

4. RequestMapping中的headers

headers表示请求访问的头部信息,必须要满足指定的方式才可以访问。如下所示:

 /**
* headers:指定请求访问的Header信息,必须要满足指定的方式才可以被访问
* consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
* @return
*/
@RequestMapping(value="/Mapping05",headers="Accept=text/html,application/xhtml+xml,application/xml;")
public ModelAndView Mapping05(){
System.out.println("Mapping05被调用了。。。。");
ModelAndView mav=new ModelAndView();
mav.addObject("msg", ">>>>>HelloWorld,HelloSpringMVC!!!");
//mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
mav.setViewName("HelloWorld");
return mav;
}

5. RequestMapping中的produces

produces表示返回的Content-Type,如下所示:返回的Content-Type表示application/json的格式

 /**
* 方法仅处理request请求中Accept头中包含了"application/json"的请求,
* 同时指定返回的内容类型(Content-Type)为application/json;
* @return
*/
@RequestMapping(value="/Mapping06",produces="application/json")
@ResponseBody
public String[] Mapping06(){
System.out.println("json 被调用。。。。。");
String[] arr=new String[]{"小明","小花"};
return arr;
}

Restful方式获取值

根据路径提取参数,必须在参数中增加@PathVariable("uname")标识

如下所示:

 /**
* 采用Restful方式传递参数
* @param name
* @return
*/
@RequestMapping("/Mapping07/{uname}")
public String Mapping07(@PathVariable("uname") String name,Model model){
System.out.println("uname="+name);
model.addAttribute("msg", name+ ">>>>>HelloWorld,HelloSpringMVC!!!");
return "HelloWorld";
}

访问如下图所示:

另外,本例中使用了视图解析器,需要进行配置,如下所示:

 <?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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 配置注解的扫描 -->
<context:component-scan base-package="com.hex.second"></context:component-scan>
<!-- 支持MVC的注解 -->
<mvc:annotation-driven ></mvc:annotation-driven>
<!-- 静态资源的支持 -->
<mvc:default-servlet-handler/>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsps/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

备注

千秋无绝色,悦目是佳人。

一起学SpringMVC之RequestMapping详解的更多相关文章

  1. springMVC(1)---@RequestMapping详解

    @RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了.   ...

  2. SpringMVC RequestMapping 详解

    SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...

  3. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  4. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...

  5. Spring MVC 学习)——控制器与@RequestMapping详解

    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解 一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求 ...

  6. SpringMvc测试框架详解----服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  7. springMVC的注解详解

    springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...

  8. SpringMVC异常处理机制详解[附带源码分析]

    目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...

  9. springmvc常用注解详解

    1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...

随机推荐

  1. CentOS 7 安装并配置 MySQL 5.7

    Linux使用MySQL Yum存储库上安装MySQL 5.7,适用于Oracle Linux,Red Hat Enterprise Linux和CentOS系统. 1.添加MySQL Yum存储库 ...

  2. Python 命令行之旅:深入 click 之增强功能

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  3. 前后台分离的 NET Core 通用权限管理系统

    前言 从事软件开发这个行业现在已经有十几年了,项目无论大小权限认证.授权模块总是或多或少有功能需求的,这一块费时费力但是又存在于后台,使用最多的可能是运维人员所以处于出力不讨好的尴尬地位,每次有新的项 ...

  4. MySQL必知必会(Select, Order by子句)

    SELECT prod_name FROM products ORDER BY prod_name; SELECT prod_id, prod_price, prod_name FROM produc ...

  5. 【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程

    CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer ...

  6. openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  7. HDU2242 考研路茫茫——空调教室 (双联通分+树形DP)

    考研路茫茫——空调教室 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. OSC2019关于开源的见闻-开源让世界更美好 社会更文明

    一.开源生态报告-红薯-开源中国创始人 1.协作乏力-大厂同样 2.协议许可证使用不当 新许可证-木兰 3.开发者对法律认识完全不够 著作权意识不够 红线意识不够 相关法律法规的熟悉不够 维权及其弱势 ...

  9. 通过Centreon监控apache、MySQL、Hadoop服务状态

    在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Na ...

  10. 关于C 语言的字符串常量拼接

    问题记录: C语言中,字符串是否可以通过连续的常量创建直接编辑拼接在一起? 比如下述语句赋值: const char *path = “this is string one”   “this is s ...