spring MVC學習(三)

1. @RequestMapping:java

在請求的路徑中傳遞參數:參數做爲路徑的一部分,能夠在路徑中直接使用web

{paramName}來表示,另外一種就是更加傳統的表示方式?paramName=paramValue正則表達式

@RequestMapping(value ="/test/path/{id}",method=RequestMethod.GET)
    public String testPath(@PathVariable String id){
        System.out.println("路徑中的參數:"+id);
        return "index";
    }
    @RequestMapping(value="/test/param?name=jobs",method= RequestMethod.GET)
    public String testParam(@RequestParam(name="name") String name){
        System.out.println("參數值是:"+name);
        return "index";
    }

在對應的接受參數分別使用@PathVariable和@RequestParamspring

@pathVariable能夠屢次使用,它能夠很好的支持int,long,Date數據類型,spring會幫咱們自動去轉換,轉換失敗時會拋出TypeMismatchException異常。固然若是這些基本的類型轉換不能知足你的需求,spring還有其餘可供類型轉換的方法,這裏不在這篇中講。app

路徑中使用正則表達式的表示方法學習

因爲本人對正則不熟悉,在這裏就把官方文檔中的說明直接拿過來,作個標記,知道有這麼一種方式方法:ui

image

另外一種方式,不解釋:spa

image

2.@RequestBody3d

它與HTTP請求中的request body對應code

@RequestMapping(path = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body, Writer writer) throws IOException {
    writer.write(body);
}

3.@ModelAtrribute

包請求中的參數封裝成一個對象

@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pet") Pet pet) {

do something
 
 }

4. Controller中能夠做爲放回值的類型

咱們這裏只學習想經常使用的就可:

ModelAndView:這個彷佛是之前最經常使用的,既有視圖又有數據模型

Model:這個只返回數據模型,視圖模型和你請求的對應

View:放回視圖

Map:數據

List:數據

String:解析成放回視圖

void:

5.@RequestParam:

把請求參數綁定到方法參數中。

@RequestMapping("/test/param")
    public String testRequestParam(@RequestParam("name") String name){
        return "index";
    }

表示在請求中有一個參數名爲name的參數,經過註解把該參數的值和方法中的參數綁定,這樣在方法參數中就能夠獲取用戶的數據。

固然這樣寫的要注意一點,就是若是沒有這個參數name的話系統會報錯,解決的辦法是:@RequestParam(value="name",required=false),可使用是不是必傳來作。

若是對於傳入的參數個數不肯定,可使用Map<Stirng,String>或者MultiValueMap<String,String>來做爲方法參數:

//不肯定參數個數
    @RequestMapping("/test/params")
    public String testRequestParam2(@RequestParam Map<String, String> params){
        //params中放着全部的參數,一鍵值對的形式存在
        return "index";
    }

6.@ResponseBody

該註解經過註解一個方法,使得這個方法的返回值直接寫到HTTP響應體中,而不一樣於放在模型(Model)中。

該註解和@RequestBody相識,相反。

//註解是方法返回值直接放到Http響應的報文體中
    @RequestMapping("/test/retunBoyd")
    @ResponseBody
    public String testResponseBody(){
        return "returnBody";
    }

 

7.@RestController

若是在你的@Controller註解的類中,方法都使用了@ResponseBody註解,那麼你就能夠修改該類使用RestController註解,全部方法去除@ResponseBody註解。

簡單講:@RestController = @Controller + @ResponseBody

 

8.@RequestHeader

不解釋看圖:

image

9.升級到3.0

設置web.xml配置文件使容器升級到3.0

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            http://java.sun.com/xml/ns/javaee
            http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    ...

</web-app>
相關文章
相關標籤/搜索