SpringMVC框架下的B/S前後臺的數據交換方式片面小結

SpringMVC框架下的B/S前後臺的數據交互

僅在在數據的角度做對基於SpringMVC框架的前後臺數據交互做片面總結,可能許多錯誤,歡迎指出。

一、後臺傳送數據,有常用的兩種類型四種方式

A類:跳轉頁面攜帶的數據,即前臺請求頁面,後臺發送頁面的時候將頁面和數據一起返回給前臺。

  • 使用@RequestMapping註解與HttpServletRequest 類,如下:

    @RequestMapping("/url")
    public String  demo(HttpServletRequest request) {
        request.setAttribute("obj", "there is your data");
        return "JSPpagename";
        }
  • 使用@RequestMapping註解與ModelAndView 類,如下:

    @RequestMapping("/url")
    public ModelAndView demo() {
        ModelAndView mv = new ModelAndView ();
        mv.setViewName("JSPpagename");
        mv.addObject("obj", "there is your data");
        return mv;
        }
  • 使用@RequestMapping註解與Model 類,如下:

    @RequestMapping("/url")
    public String demo(Model model) {
        model.addAttribute("obj", "there is your data");
        return "JSPpagename";
        }
  • 使用@RequestMapping註解與Map 接口,如下:

    @RequestMapping("/url")
    public String demo(Map<String,Object> paramMap) {
        paramMap.put("obj", "there is your data");
        return "JSPpagename";
        }

B類:非跳轉頁面攜帶的數據,即前臺單純向後臺請求數據,多用於AJAX。

  • 需要使用@RequestMapping註解與@ResponseBody註解,如下:
    //返回的類型是字符串
    @ResponseBody
    @RequestMapping("/url")
    public String demo() {
    
        return "yourdata";
        }
        //如果想要返回複雜類型的數據,那麼你需要你個將對象字符串化的轉換器
        //一般都會使用jackson解析複雜對象到json字符串。
二、前臺接收數據,有常用的兩種類型兩種方式

A類 :跳轉頁面攜帶的數據。

  • 在頁面中使用EL表達式接受值,如:

     ${obj}
    

B類: 非跳轉頁面攜帶的數據。

  • 通過AJAX 的 success(data)方法中的data獲取值。
三、前臺傳送數據,有常用的兩種提交類型五種方式。

A類 : GET提交數據類型。

  • 使用URL提交,即以&符號連接的鍵值對字符串數據拼接於URL尾並以 ? 分割數據與URL,如下:

    http://localhost:8080/myproject/login?name=INK_FUNC&age=12
    
  • 使用 form 表單提交數據時將 method 屬性設置爲 GET。

  • 使用AJAX提交數據時將 type 屬性設置爲 GET。

B類:POST提交數據類型。

  • 使用 form 表單提交數據時將 method 屬性設置 POST。

  • 使用AJAX提交數據時將 type 屬性設置爲 POST 。

四、後臺接受數據,有常用的兩種類型5種方式。

A 類:GET提交的數據。

  • 使用URL提交的數據,將用到@RequestMapping註解或@RequestParam註解與String類或Integer類等基本類型,如下:

    //第一種情況:參數名必須與url中提交的鍵值對數據中的鍵值名一樣
    @RequestMapping("/url")
    public String demo(String name,Integer age) {
    return "JSPpagename";
    }
    //或者第二種情況:參數名任意,但是@RequestParam中value值必須和url中提交的鍵值對數據中的鍵值名一樣。
    @RequestMapping("/url")
    public String demo(@RequestParam(value="name")String anyname,@RequestParam(value="age")Integer anyage) {
    return "JSPpagename";
    }
  • GET類型表單提交的數據接受方式,參照URL提交的數據接受方式,如果有和表單對應的POJO類,亦可以如下:

    //User 類 即是封裝的表單提交的數據集合
    @RequestMapping("/url")
    public String demo(User userpojo) {
    return "JSPpagename";
    }
  • GET類型AJAX提交的數據接受方式,參照URL提交的數據接收方式。

B類:POST提交的數據。

  • POST類型的表單提交,參照 GET類型的表單提交。

  • POST類型的ajax提交。

     $.ajax({
                 url:"url",//your action url
                 type:"post",//post or get
                 async:true,//true or false
                 timeout:1000,//請求超時時間(毫秒
                 cache:true,//true or false,是否從瀏覽器緩存中加載請求信息
                 contentType:"application/x-www-form-urlencoded"//提交數據編碼類型,還有其他類型,比如 application/json等等
                 dataType:"json",//預期服務器返回的數據類型,果不指定,jQuery 將自動根據 HTTP 包 MIME 信息返回 responseXML 或 responseText,常用的有xml,html,script,json等等。
                 data:data,//your data
                 success:function(data){}//do something
                 error:function(msg){}//do something
             }) 
    

一些補充:

  1. 在數據的角度來說,GET 和 POST 請求對它的影響主要體現在請求頭中放置的位置,本身類型。GET請求傳遞數據和URL以 問號(?)分割,之前是URL,之後是數據,並且數據以鍵值對中的值存在,鍵值對之間用位與符號(&)鏈接的字符串,而POST請求,不僅僅限於鍵值對字符串,還有其他能提供數據交換能力的文件類型,如,xml,json等等。
  2. 不使用如何第三方框架對前臺提交的數據進行轉換的情況下,SpringMVC方法上不用任何參數映射註解控制時候,能處理鍵值對字符串,並且能自動映射方法參數。
  3. 在AJAX中,GET請求提交數據,在 data 屬性上的數據,必須是鍵值對字符串。 而POST請求提交數據時候,可以通過 contentType 指定數據類型,爲後臺進行數據轉換提供指引。當使用默認 contentType 的時候,在data屬性上應提供一個json對象或鍵值對字符串,此時後臺接受數據的類型爲後臺接受數據A類。
  4. 在AJAX中,POST請求提交數據,使用默認 contentType,如果提交的數據是字符串類型,一類是普通的字符串類型,一類是鍵值對字符串類型(如果提供的是json對象,jquery會自動轉換爲鍵值對字符串類型),在後臺的方法參數上使用 @RequestBody註解一個字符串參數,可以將字符數據完全綁定到參數上,這種情況多用於普通字符串,並自己解析數據。
  5. 如果提交的數據是json字符串格式的,需要將 contentType 屬性 設置爲 application/json ,並且使用POST請求提交,在後臺你需要使用第三方json數據轉換框架來進行參數數據綁定。
  6. 在form表單提交的時候,後臺使用POJO參數來接收數據,並且POJO中存在非String類型的屬性,此時與之對應的表單中的數據項爲空,在提交的時候,會出現400錯誤,即請求錯誤。
  7. 在AJAX POST請求提交數據時候,如果後臺無法轉換數據,將會出現415錯誤,即媒體類型不符。這是由於 contentType 屬性設置的屬性值即數據類型,後臺無法進行轉換,或者說後臺沒有相應的轉換器(HttpMessageConverter),你需要在SpringMVC的配置文件中配置或者使用其他其他配置方式。
  8. 在SpringMVC中參數數據綁定上還有許多註解有非常強大的功能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章