本文以一個簡單的小例子,簡述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>
備註
千秋無絕色,悅目是佳人。