zoukankan      html  css  js  c++  java
  • 一起学SpringMVC之RequestMapping详解

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

    什么是RequestMapping?

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

    RequestMapping的常见用法

    1. RequestMapping默认值

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

     1 /**
     2      * 默认值,即为value对应的值
     3      * @RequestMapping("Mapping01")
     4      * @return
     5      */
     6     @RequestMapping("/Mapping01")
     7     public ModelAndView Mapping01(){
     8         System.out.println("Mapping01被调用了。。。。");
     9         ModelAndView mav=new ModelAndView();
    10         mav.addObject("msg", "HelloWorld,HelloSpringMVC!!!");
    11         //mav.setViewName("WEB-INF/jsps/HelloWorld.jsp");
    12         mav.setViewName("HelloWorld");
    13         return mav;
    14     }

    2. ReqeustMapping的value和method属性

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

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

    3. RequestMapping中的params

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

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

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

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

    4. RequestMapping中的headers

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

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

     5. RequestMapping中的produces

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

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

    Restful方式获取值

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

    如下所示:

     1 /**
     2      * 采用Restful方式传递参数
     3      * @param name
     4      * @return
     5      */
     6     @RequestMapping("/Mapping07/{uname}")
     7     public String Mapping07(@PathVariable("uname") String name,Model model){
     8         System.out.println("uname="+name);
     9         model.addAttribute("msg",  name+ ">>>>>HelloWorld,HelloSpringMVC!!!");
    10         return "HelloWorld";
    11     }

    访问如下图所示:

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

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4 xmlns:context="http://www.springframework.org/schema/context"
     5 xmlns:mvc="http://www.springframework.org/schema/mvc"
     6 xsi:schemaLocation="http://www.springframework.org/schema/beans
     7  http://www.springframework.org/schema/beans/spring-beans.xsd
     8  http://www.springframework.org/schema/context
     9  http://www.springframework.org/schema/context/spring-context.xsd
    10  http://www.springframework.org/schema/mvc
    11  http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    12       <!-- 配置注解的扫描 -->
    13      <context:component-scan base-package="com.hex.second"></context:component-scan>
    14      <!-- 支持MVC的注解 -->
    15      <mvc:annotation-driven ></mvc:annotation-driven>
    16      <!-- 静态资源的支持 -->
    17      <mvc:default-servlet-handler/>
    18       <!-- 配置视图解析器 -->
    19     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    20     id="internalResourceViewResolver">
    21         <property name="prefix" value="/WEB-INF/jsps/"/>
    22         <property name="suffix" value=".jsp"/>
    23     </bean>
    24 </beans>

    备注

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

  • 相关阅读:
    课堂练习
    《你的灯亮着吗》第二篇总结
    四则运算2程序
    《你的灯亮着吗》第一篇总结
    四则运算2
    阅读计划
    四则运算
    《人月神话》读后感
    软件演化
    软件测试
  • 原文地址:https://www.cnblogs.com/hsiang/p/11373629.html
Copyright © 2011-2022 走看看