欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC ajax請(qǐng)求的處理方法介紹

 更新時(shí)間:2022年11月08日 09:28:33   作者:學(xué)習(xí)使我快樂T  
Ajax即異步的 JavaScript和XML,是一種無需重新加載整個(gè)網(wǎng)頁的情況下,能夠更新部分模塊的網(wǎng)頁技術(shù),下面這篇文章主要給大家介紹了關(guān)于SpringMVC Ajax請(qǐng)求的處理,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

準(zhǔn)備工作

①創(chuàng)建maven工程

②添加相關(guān)依賴,和添加web模塊

③配置web.xml,如配置處理1.編碼過濾器,2.請(qǐng)求方式的過濾器,3.前端控制器

④創(chuàng)建springmvc.xml,并進(jìn)行配置

⑤創(chuàng)建控制層controller

一、@RequestBody

index.html

      axios({
            url:"",//請(qǐng)求路徑
            method:"",//請(qǐng)求方式
            //以name=value&name=value的方式發(fā)送的請(qǐng)求參數(shù)
            //不管使用的請(qǐng)求方式是get或post,請(qǐng)求參數(shù)都會(huì)被拼接到請(qǐng)求地址后
            //此種方式的請(qǐng)求參數(shù)可以通過request.getParameter()獲取
            params:{},
            //以json格式發(fā)送的請(qǐng)求參數(shù)
            //請(qǐng)求參數(shù)會(huì)被保存到請(qǐng)求報(bào)文的請(qǐng)求體傳輸?shù)椒?wù)器
            //此種方式的請(qǐng)求參數(shù)不可以通過request.getParameter()獲取
            data:{}
       }).then(response=>{
            console.log(response.data);
       });
<div id="app">
    <h1>index.html</h1>
    <input type="button" value="測(cè)試SpringMVC處理ajax" @click="testAjax()">
</div>
<script type="text/javascript" th:src="@{/js/vue.js}"></script>
<script type="text/javascript" th:src="@{/js/axios.min.js}"></script>
<script type="text/javascript">
    var vue = new Vue({
        el:"#app",
        methods:{
            testAjax() {
                axios.post(
                    "/SpringMVC/test/ajax?id=1001",
                    {username:"admin",password:"123456"}
                ).then(response=>{
                    console.log(response.data);
                });
            }
        }
    });
</script>

沒有ajax就只能使用超鏈接和form表單跟后端交互數(shù)據(jù),很不方便而且很多功能實(shí)現(xiàn)不了

@RequestBody可以獲取請(qǐng)求體信息,使用@RequestBody注解標(biāo)識(shí)控制器方法的形參,當(dāng)前請(qǐng)求的請(qǐng)求體就會(huì)為當(dāng)前注解所標(biāo)識(shí)的形參賦值

注:

1.@RequestBody:將請(qǐng)求體中的內(nèi)容和控制器方法的形參進(jìn)行綁定

    @RequestMapping("/test/ajax")
    public void testAjax(Integer id, @RequestBody String requestBody, HttpServletResponse response) throws IOException {
        System.out.println("requestBody:" + requestBody);
        System.out.println("id:" + id);
        response.getWriter().write("hello,axios");
    }

二、@RequestBody獲取json格式的請(qǐng)求參數(shù)

index.html

<input type="button" value="使用@RequestBody注解處理json格式的請(qǐng)求參數(shù)" @click="testRequestBody()">

在使用了axios發(fā)送ajax請(qǐng)求之后,瀏覽器發(fā)送到服務(wù)器的請(qǐng)求參數(shù)有兩種格式:

1、name=value&name=value...,此時(shí)的請(qǐng)求參數(shù)可以通過request.getParameter()獲取,對(duì)應(yīng) SpringMVC中,可以直接通過控制器方法的形參獲取此類請(qǐng)求參數(shù)

2、{key:value,key:value,...},此時(shí)無法通過request.getParameter()獲取,之前我們使用操作 json的相關(guān)jar包gson或jackson處理此類請(qǐng)求參數(shù),可以將其轉(zhuǎn)換為指定的實(shí)體類對(duì)象或map集 合。在SpringMVC中,直接使用@RequestBody注解標(biāo)識(shí)控制器方法的形參即可將此類請(qǐng)求參數(shù) 轉(zhuǎn)換為java對(duì)象

            testRequestBody() {
                axios.post(
                    "/SpringMVC/test/RequestBody/json",
                    {username:"admin",password:"123456",age:23,gender:"男"}
                ).then(response=>{
                    console.log(response.data);
                });
            }

然后來控制層處理一下

注:使用@RequestBody獲取json格式的請(qǐng)求參數(shù)的條件:

使用@RequestBody注解將json格式的請(qǐng)求參數(shù)轉(zhuǎn)換為java對(duì)象

a>導(dǎo)入jackson的依賴

b>在SpringMVC的配置文件中設(shè)置<mvc:annotation-driven/>

c>在處理請(qǐng)求的控制器方法的形參位置,直接設(shè)置json格式的請(qǐng)求參數(shù)要轉(zhuǎn)換的java類型的形參,使用@RequestBody注解標(biāo)識(shí)即可

jackson依賴

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.1</version>
        </dependency>

開啟注解驅(qū)動(dòng)

<mvc:annotation-driven />

方式一:接收成實(shí)體類

    @RequestMapping("/test/RequestBody/json")
    public void testRequestBody(@RequestBody User user, HttpServletResponse response) throws IOException {
        System.out.println(user);
        response.getWriter().write("hello,RequestBody");
    }

方式二:接收成map集合

    @RequestMapping("/test/RequestBody/json")
    public void testRequestBody(@RequestBody Map<String,Object> map, HttpServletResponse response) throws IOException {
        System.out.println(map);
        response.getWriter().write("hello,RequestBody");
    }

三、@ResponseBody

@ResponseBody用于標(biāo)識(shí)一個(gè)控制器方法,可以將該方法的返回值直接作為響應(yīng)報(bào)文的響應(yīng)體響應(yīng)到瀏覽器

<a th:href="@{/test/ResponseBody}" rel="external nofollow" >測(cè)試@ResponseBody注解響應(yīng)瀏覽器數(shù)據(jù)</a>
    @RequestMapping("/test/ResponseBody")
    @ResponseBody
    public String testResponseBody() {
        return "success";
    }

四、@ResponseBody響應(yīng)瀏覽器json數(shù)據(jù)

使用@ResponseBody注解響應(yīng)瀏覽器json格式的數(shù)據(jù)

a>導(dǎo)入jackson的依賴

b>在SpringMVC的配置文件中設(shè)置<mvc:annotation-driven/>

c>將需要轉(zhuǎn)換成json字符串的java對(duì)象直接作為控制器方法的返回值,使用@ResponseBody注解來標(biāo)識(shí)控制器方法就可以將java對(duì)象直接轉(zhuǎn)換為json字符串,并響應(yīng)到瀏覽器

實(shí)體類-->json對(duì)象

    @RequestMapping("/test/ResponseBody/json")
    @ResponseBody
    public User testResponseBodyJson() {
        User user = new User(1001,"admin","123456",20,"男");
        return user;
    }

map-->json對(duì)象

    @RequestMapping("/test/ResponseBody/json")
    @ResponseBody
    public Map<String,Object> testResponseBodyJson() {
        User user1 = new User(1001,"admin1","123456",20,"男");
        User user2 = new User(1001,"admin2","123456",20,"男");
        User user3 = new User(1001,"admin3","123456",20,"男");
        Map<String,Object> map = new HashMap<>();
        map.put("1001",user1);
        map.put("1002",user2);
        map.put("1003",user3);
        return map;
    }

list-->json數(shù)組

    @RequestMapping("/test/ResponseBody/json")
    @ResponseBody
    public List<User> testResponseBodyJson() {
        User user1 = new User(1001,"admin1","123456",20,"男");
        User user2 = new User(1001,"admin2","123456",20,"男");
        User user3 = new User(1001,"admin3","123456",20,"男");
        List<User> list = Arrays.asList(user1, user2, user3);
        return list;
    }

常用的Java對(duì)象轉(zhuǎn)換為json的結(jié)果:

實(shí)體類-->json對(duì)象

map-->json對(duì)象

list-->json數(shù)組

五、@RestController注解

@RestController注解是springMVC提供的一個(gè)復(fù)合注解,標(biāo)識(shí)在控制器的類上,就相當(dāng)于為類添加了 @Controller注解,并且為其中的每個(gè)方法添加了@ResponseBody注解

到此這篇關(guān)于SpringMVC ajax請(qǐng)求的處理方法介紹的文章就介紹到這了,更多相關(guān)SpringMVC ajax請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java線程安全基礎(chǔ)概念解析

    Java線程安全基礎(chǔ)概念解析

    這篇文章主要介紹了Java線程安全基礎(chǔ)概念解析,希望給大家一個(gè)參考,需要的朋友可以了解下。
    2017-09-09
  • 基于java實(shí)現(xiàn)websocket協(xié)議過程詳解

    基于java實(shí)現(xiàn)websocket協(xié)議過程詳解

    這篇文章主要介紹了基于java實(shí)現(xiàn)websocket協(xié)議過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 學(xué)習(xí)SpringMVC——如何獲取請(qǐng)求參數(shù)詳解

    學(xué)習(xí)SpringMVC——如何獲取請(qǐng)求參數(shù)詳解

    本篇文章主要介紹了SpringMVC——如何獲取請(qǐng)求參數(shù)詳解,詳細(xì)的介紹了每種參數(shù)注解的用法。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • springboot整合minio實(shí)現(xiàn)文件上傳與下載且支持鏈接永久訪問

    springboot整合minio實(shí)現(xiàn)文件上傳與下載且支持鏈接永久訪問

    本文主要介紹了springboot整合minio實(shí)現(xiàn)文件上傳與下載且支持鏈接永久訪問,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 基于java Springboot實(shí)現(xiàn)教務(wù)管理系統(tǒng)詳解

    基于java Springboot實(shí)現(xiàn)教務(wù)管理系統(tǒng)詳解

    這篇文章主要介紹了Java 實(shí)現(xiàn)簡易教務(wù)管理系統(tǒng)的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • springboot中如何判斷某個(gè)bean是否存在

    springboot中如何判斷某個(gè)bean是否存在

    這篇文章主要介紹了springboot中如何判斷某個(gè)bean是否存在,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 分享Java常用幾種加密算法(四種)

    分享Java常用幾種加密算法(四種)

    Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細(xì)規(guī)范。本文給大家分享java常用的幾種加密算法,需要的朋友可以參考下
    2015-10-10
  • Java關(guān)鍵字super超詳細(xì)解釋

    Java關(guān)鍵字super超詳細(xì)解釋

    在Java中super是一個(gè)關(guān)鍵字,用于訪問父類中的屬性、方法或構(gòu)造函數(shù),這篇文章主要給大家介紹了關(guān)于Java關(guān)鍵字super超詳細(xì)解釋的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • MyBatis攔截器分表實(shí)踐分享

    MyBatis攔截器分表實(shí)踐分享

    部門內(nèi)有一些億級(jí)別核心業(yè)務(wù)表增速非常快,增量日均100W,但線上業(yè)務(wù)只依賴近一周的數(shù)據(jù),隨著數(shù)據(jù)量的迅速增長,慢SQL頻發(fā),數(shù)據(jù)庫性能下降,系統(tǒng)穩(wěn)定性受到嚴(yán)重影響,本篇文章,將分享如何使用MyBatis攔截器低成本的提升數(shù)據(jù)庫穩(wěn)定性,需要的朋友可以參考下
    2024-01-01
  • 實(shí)例詳解Spring Boot實(shí)戰(zhàn)之Redis緩存登錄驗(yàn)證碼

    實(shí)例詳解Spring Boot實(shí)戰(zhàn)之Redis緩存登錄驗(yàn)證碼

    本章簡單介紹redis的配置及使用方法,本文示例代碼在前面代碼的基礎(chǔ)上進(jìn)行修改添加,實(shí)現(xiàn)了使用redis進(jìn)行緩存驗(yàn)證碼,以及校驗(yàn)驗(yàn)證碼的過程。感興趣的的朋友一起看看吧
    2017-08-08

最新評(píng)論