SpringMVC ajax請(qǐng)求的處理方法介紹
準(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)文章希望大家以后多多支持腳本之家!
- SpringMVC中處理Ajax請(qǐng)求的示例
- Springmvc處理ajax請(qǐng)求并返回json數(shù)據(jù)
- Spring MVC中處理ajax請(qǐng)求的跨域問題與注意事項(xiàng)詳解
- Springmvc ajax跨域請(qǐng)求處理方法實(shí)例詳解
- springMVC解決ajax請(qǐng)求亂碼的三種方法
- Spring MVC 中 AJAX請(qǐng)求并返回JSON的示例
- SpringMVC環(huán)境下實(shí)現(xiàn)的Ajax異步請(qǐng)求JSON格式數(shù)據(jù)
- Spring MVC 處理Ajax請(qǐng)求的方式詳解
相關(guān)文章
基于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ù)詳解
本篇文章主要介紹了SpringMVC——如何獲取請(qǐng)求參數(shù)詳解,詳細(xì)的介紹了每種參數(shù)注解的用法。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12springboot整合minio實(shí)現(xiàn)文件上傳與下載且支持鏈接永久訪問
本文主要介紹了springboot整合minio實(shí)現(xiàn)文件上傳與下載且支持鏈接永久訪問,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01基于java Springboot實(shí)現(xiàn)教務(wù)管理系統(tǒng)詳解
這篇文章主要介紹了Java 實(shí)現(xiàn)簡易教務(wù)管理系統(tǒng)的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08實(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