最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

準(zhǔn)備工作

①創(chuàng)建maven工程

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

③配置web.xml,如配置處理1.編碼過(guò)濾器,2.請(qǐng)求方式的過(guò)濾器,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ù)可以通過(guò)request.getParameter()獲取
            params:{},
            //以json格式發(fā)送的請(qǐng)求參數(shù)
            //請(qǐng)求參數(shù)會(huì)被保存到請(qǐng)求報(bào)文的請(qǐng)求體傳輸?shù)椒?wù)器
            //此種方式的請(qǐng)求參數(shù)不可以通過(guò)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>

沒(méi)有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ù)可以通過(guò)request.getParameter()獲取,對(duì)應(yīng) SpringMVC中,可以直接通過(guò)控制器方法的形參獲取此類(lèi)請(qǐng)求參數(shù)

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

然后來(lái)控制層處理一下

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

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

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

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

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

jackson依賴(lài)

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

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

<mvc:annotation-driven />

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

    @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的依賴(lài)

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

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

實(shí)體類(lèi)-->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í)體類(lèi)-->json對(duì)象

map-->json對(duì)象

list-->json數(shù)組

五、@RestController注解

@RestController注解是springMVC提供的一個(gè)復(fù)合注解,標(biāo)識(shí)在控制器的類(lèi)上,就相當(dāng)于為類(lèi)添加了 @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的Jackson自定義序列化詳解

    Java的Jackson自定義序列化詳解

    這篇文章主要介紹了Java的Jackson自定義序列化詳解,對(duì)比序列化器,可以看到,使用@JsonValue注解已經(jīng)將Leader類(lèi)的序列化方式改變了,進(jìn)而影響了Country類(lèi),再來(lái)執(zhí)行test7()測(cè)試反序列化,結(jié)果與之前是一致的,需要的朋友可以參考下
    2023-11-11
  • springcloud部署提示 找不到url的解決

    springcloud部署提示 找不到url的解決

    這篇文章主要介紹了springcloud部署提示 找不到url的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java中l(wèi)ist.foreach不能使用字符串拼接的問(wèn)題

    Java中l(wèi)ist.foreach不能使用字符串拼接的問(wèn)題

    這篇文章主要介紹了Java中l(wèi)ist.foreach不能使用字符串拼接的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解HttpClient用法

    詳解HttpClient用法

    HttpClient是Apache Jakarta Common下的子項(xiàng)目,用來(lái)提供高效的、最新的、功能豐富的支持HTTP協(xié)議的客戶(hù)端編程工具包,并且它支持HTTP協(xié)議最新的版本和建議,這篇文章主要介紹了詳解HttpClient用法,需要的朋友可以參考下
    2021-01-01
  • Java中的HttpServletRequest接口詳細(xì)解讀

    Java中的HttpServletRequest接口詳細(xì)解讀

    這篇文章主要介紹了Java中的HttpServletRequest接口詳細(xì)解讀,是一個(gè)接口,全限定名稱(chēng)為Jakarta.Serclet.http.HttpServletRequest
    HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下
    2023-11-11
  • Spring注解之@Import注解的使用和源碼分析

    Spring注解之@Import注解的使用和源碼分析

    今天主要介紹Spring @Import注解,在Spring中@Import使用得比較頻繁,它得作用是導(dǎo)入bean,具體的導(dǎo)入方式有多種,特別在SpringBoot項(xiàng)目中,很多地方都使用到了@Import注解,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • 淺談java String不可變的好處

    淺談java String不可變的好處

    這篇文章主要介紹了java String不可變的好處,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • lombok插件無(wú)法使用的原因及解決方案

    lombok插件無(wú)法使用的原因及解決方案

    這篇文章主要介紹了lombok插件無(wú)法使用的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑實(shí)戰(zhàn)記錄

    SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Springboot集成mybatis實(shí)現(xiàn)多數(shù)據(jù)源配置詳解流程

    Springboot集成mybatis實(shí)現(xiàn)多數(shù)據(jù)源配置詳解流程

    在日常開(kāi)發(fā)中,若遇到多個(gè)數(shù)據(jù)源的需求,怎么辦呢?通過(guò)springboot集成mybatis實(shí)現(xiàn)多數(shù)據(jù)源配置,簡(jiǎn)單嘗試一下,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評(píng)論

太原市| 察隅县| 东兰县| 乌兰察布市| 扶风县| 县级市| 抚松县| 永春县| 阳新县| 仁寿县| 德清县| 政和县| 广灵县| 大竹县| 新兴县| 兴业县| 上饶县| 古田县| 贺兰县| 米林县| 翼城县| 遂宁市| 常熟市| 沙坪坝区| 宾川县| 象州县| 高雄县| 靖远县| 金塔县| 咸丰县| 万荣县| 山阳县| 鄂温| 牙克石市| 奉新县| 四川省| 营山县| 万山特区| 博客| 炎陵县| 沾益县|