一起学SpringMVC之RequestMapping详解
本文以一个简单的小例子,简述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详解的更多相关文章
- springMVC(1)---@RequestMapping详解
@RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了. ...
- SpringMVC RequestMapping 详解
SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...
- SpringMVC 常用注解 详解
SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping 路径映射 2.@Requ ...
- Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求并将其转换为一个模型.在Spring MVC中一个控制器可以包含多个Action(动作. ...
- Spring MVC 学习)——控制器与@RequestMapping详解
Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解 一.控制器定义 控制器提供访问应用程序的行为,通常通过服务接口定义或注解定义两种方法实现. 控制器解析用户的请求 ...
- SpringMvc测试框架详解----服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- springMVC的注解详解
springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...
- SpringMVC异常处理机制详解[附带源码分析]
目录 前言 重要接口和类介绍 HandlerExceptionResolver接口 AbstractHandlerExceptionResolver抽象类 AbstractHandlerMethodE ...
- springmvc常用注解详解
1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...
随机推荐
- yarn和npm的对比以及yarn的使用
0--前言 为什么要使用yarn,如果你从事前端开发有些年头了,那你肯定对npm又爱又恨,爱就不说了,恨嘛,就是NPM经常奇慢和卡顿,这还能忍,经常各种错误就没法忍了,尤其是他人创建的项目,自己在安装 ...
- Netty学习——服务器端代码和客户端代码 原理详解
服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol 协议层2.TFrameTransport 传输层3.THsh ...
- Java泛型之上、下界通配符的理解(适合初学)
泛型的由来 为什么需要泛型 Java的数据类型一般都是在定义时就需要确定,这种强制的好处就是类型安全,不会出现像弄一个ClassCastException的数据给jvm,数据安全那么执行的clas ...
- TestNG系列(二)TestNG注解
前言 TetsNG提供了很多注解,允许测试人员灵活地组织测试用例 一.@Test @Tets是TestNG的核心注解,被注解的方法,表示为一个测试方法. description属性 @Test(des ...
- luogu P1801 【黑匣子_NOI导刊2010提高(06)】
这里提供一个简单实现新思路: . 约定: 以下n指代的数的数量,不是题目所指的n 以下m指代询问的数量,不是题目所指的m (不好意思,这是本人习惯) 分块+堆 **堆一次只能输出堆顶的一个元素,如果我 ...
- IPV6-ONLY
1.ipv4地址已经耗尽,未来可能只支持ipv6-only. 2.在一个纯IPV6环境下,路由器会自动将IPV4地址转成IPv6地址. 苹果这样要求,对于大多数开发者而言,并不困难.目前大多数应用无需 ...
- iOS全局处理键盘事件
转自:http://www.cnblogs.com/xinus/archive/2013/01/22/ios-keybord-notification.html 注册监听键盘事件的通知 [[NSNot ...
- yarn 与 npm 比较
一.首先需要了解的命令 npm install === yarn —— install 安装是默认行为. npm install taco --save === yarn add taco —— ta ...
- bug小结
在不同的文件下面可以创建同一个包,但是不能创建同一个class文件!!! ParameterType:需要写实体类的类型,最好不要写实体的别名 这是因为我们在配置mybatis的配置文件时已经说明 ...
- Servlet的运行流程以及web.xml文件中的几种配置方式
Servlet的运行流程: 有俩种方式: 1.创建一个包,然后在包下创建一个class,class里面需要继承httpservlet,复写service方法------>配置web.xml文件: ...