@RequestMapping 註解的使用及註解屬性詳解

1.基本使用

  • 通過註解方式實現路徑到處理器方法的映射。
  • 可以用在類或方法上。
  • 用在方法上表示將該方法變爲一個處理器,且和指定路徑做映射。
  • 用在類上則配置的路徑會作爲這個類中所有處理器的路徑的父路徑使用。
@RequestMapping("/test01.action")

public ModelAndView test01() {

ModelAndView mav = new ModelAndView();

mav.addObject("attr1", "hello anno~");

mav.addObject("attr2", "hello mvc~");

mav.setViewName("first");

return mav;

}

2.註解屬性

2.1String [] value() default {};

  • 指定要將當前處理器綁定到哪個訪問路徑上。
  • 可以配置多個路徑。
  • 路徑中也可以使用*號作爲通配符匹配部分路徑。

 @RequestMapping(value = {"/test02.action"})等價於@RequestMapping("/test02.action")

@RequestMapping({"/test02.action","/test002.action","/test002*.action"})

public ModelAndView test02() {

ModelAndView mav = new ModelAndView();

mav.addObject("attr1", "hello anno~");

mav.addObject("attr2", "hello mvc~");

mav.setViewName("first");

return mav;

}

//////////////////////////////////////////////////////////////////////////////////////

 
    /**
     *  String[] value() default {};屬性
     *  用來講路徑綁定到當前控制器方法上
     *  此屬性是一個數組,可以將多個路徑綁定到該方法上
     *  配置的路徑中可以使用* 通配符來通配路徑
     *  如果不返回,那麼默認會用/my01/test02.action去掉後綴去找即去找/my01/test02.jsp
     */
    //Model 只能存模型數據 ,下面2種寫法等價
    //@RequestMapping(value = {"/test02.action"})
    @RequestMapping("/test02.action")
    public String test02(Model model){
        model.addAttribute("k3","v3");
        model.addAttribute("k4","v4");
        //視圖直接返回字符串,默認會把返回的字符串當做視圖名稱使用
        return "my01test02";
    }

2.2RequestMethod[] method() default {}

  • 指定當前處理器處理哪種提交方式提交的請求。
  • 不指定則接收任意請求方式的請求
@RequestMapping(value="/test03.action",method= RequestMethod.POST)

public ModelAndView test03() {

ModelAndView mav = new ModelAndView();

mav.addObject("attr1", "hello anno~");

mav.addObject("attr2", "hello mvc~");

mav.setViewName("first");

return mav;

}
 

 2.3String[] params() default {}

  • 通過params屬性指定只處理請求參數符合指定要求的請求
  • 用來限定當前請求中必須包含指定名稱的請求參數纔會被當前處理器處理 

格式1:只指定名稱,要求必須具有該名稱的請求參數

格式2:以"名稱=值"或"名稱!=值"的方式指定必須具有某個請求參數,且值必須等於或不等於給定值

格式3:以"!名稱"的方式指定必須不包含指定名稱的請求參數

@RequestMapping(value="/test04.action",params= {"name","gender=male","!age","addr!=bj"})

public ModelAndView test04() {

ModelAndView mav = new ModelAndView();

mav.addObject("attr1", "hello anno~");

mav.addObject("attr2", "hello mvc~");

mav.setViewName("first");

return mav;

}

2.4String[] headers() default {}

  • 用來限定當前請求中必須包含指定名稱的請求頭纔會被當前處理器處理

 格式1:只指定名稱,要求必須具有該名稱的請求頭

 格式2:以"名稱=值"或"名稱!=值"的方式指定必須具有某個請求頭,且值必須等於或不等於給定值

 格式3:以"!名稱"的方式指定必須不包含指定名稱的請求頭

@RequestMapping(value="/test05.action",headers= {"host=localhost"})

public ModelAndView test05() {

ModelAndView mav = new ModelAndView();

mav.addObject("attr1", "hello anno~");

mav.addObject("attr2", "hello mvc~");

mav.setViewName("first");

return mav;

}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章