日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC中的异步请求-跨域访问

發布時間:2025/3/15 javascript 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC中的异步请求-跨域访问 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發送異步請求:

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %><a href="javascript:void(0);" id="testAjax">訪問springmvc后臺controller</a><br/> <a href="javascript:void(0);" id="testAjaxPojo">訪問springmvc后臺controller,傳遞Json格式POJO</a><br/> <a href="javascript:void(0);" id="testAjaxList">訪問springmvc后臺controller,傳遞Json格式List</a><br/> <a href="javascript:void(0);" id="testAjaxReturnString">訪問springmvc后臺controller,返回字符串數據</a><br/> <a href="javascript:void(0);" id="testAjaxReturnJson">訪問springmvc后臺controller,返回Json數據</a><br/> <a href="javascript:void(0);" id="testAjaxReturnJsonList">訪問springmvc后臺controller,返回Json數組數據</a><br/> <br/> <a href="javascript:void(0);" id="testCross">跨域訪問</a><br/><script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js"></script><script type="text/javascript">$(function () {//為id="testAjax"的組件綁定點擊事件$("#testAjax").click(function(){//發送異步調用$.ajax({//請求方式:POST請求type:"POST",//請求的地址url:"ajaxController",//請求參數(也就是請求內容)data:'ajax message',//響應正文類型dataType:"text",//請求正文的MIME類型contentType:"application/text",});});//為id="testAjaxPojo"的組件綁定點擊事件$("#testAjaxPojo").click(function(){$.ajax({type:"POST",url:"ajaxPojoToController",data:'{"name":"Jock","age":39}',dataType:"text",contentType:"application/json",});});//為id="testAjaxList"的組件綁定點擊事件$("#testAjaxList").click(function(){$.ajax({type:"POST",url:"ajaxListToController",data:'[{"name":"Jock","age":39},{"name":"Jockme","age":40}]',dataType:"text",contentType:"application/json",});});//為id="testAjaxReturnString"的組件綁定點擊事件$("#testAjaxReturnString").click(function(){//發送異步調用$.ajax({type:"POST",url:"ajaxReturnString",//回調函數success:function(data){//打印返回結果alert(data);}});});//為id="testAjaxReturnJson"的組件綁定點擊事件$("#testAjaxReturnJson").click(function(){//發送異步調用$.ajax({type:"POST",url:"ajaxReturnJson",//回調函數success:function(data){alert(data);alert(data['name']+" , "+data['age']);}});});//為id="testAjaxReturnJsonList"的組件綁定點擊事件$("#testAjaxReturnJsonList").click(function(){//發送異步調用$.ajax({type:"POST",url:"ajaxReturnJsonList",//回調函數success:function(data){alert(data);alert(data.length);alert(data[0]["name"]);alert(data[1]["age"]);}});});//為id="testCross"的組件綁定點擊事件$("#testCross").click(function(){//發送異步調用$.ajax({type:"POST",url:"http://www.jock.com/cross",//回調函數success:function(data){alert("跨域調用信息反饋:"+data['name']+" , "+data['age']);}});});}); </script>

接收異步請求參數:

  • 名稱: @RequestBody
  • 類型: 形參注解
  • 位置:處理器類中的方法形參前方
  • 作用:將異步提交數據組織成標準請求參數格式,并賦值給形參
@RequestMapping("/ajaxController") // 不加這個注解是拿不到的,如果獲取不了前端返回的數據,要注意這里。 public String ajaxController(@RequestBody String message){System.out.println(message);return "page.jsp"; }
  • 注解添加到Pojo參數前方時,封裝的異步提交數據按照Pojo的屬性格式進行關系映射
  • 注解添加到集合參數前方時,封裝的異步提交數據按照集合的存儲結構進行關系映射
@RequestMapping("/ajaxPojoToController") //如果處理參數是POJO,且頁面發送的請求數據格式與POJO中的屬性對應,@RequestBody注解可以自動映射對應請求數據到POJO中 //注意:POJO中的屬性如果請求數據中沒有,屬性值為null,POJO中沒有的屬性如果請求數據中有,不進行映射 public String ajaxPojoToController(@RequestBody User user){System.out.println("controller pojo :"+user);return "page.jsp"; }@RequestMapping("/ajaxListToController") //如果處理參數是List集合且封裝了POJO,且頁面發送的數據是JSON格式的對象數組,數據將自動映射到集合參數中 public String ajaxListToController(@RequestBody List<User> userList){System.out.println("controller list :"+userList);return "page.jsp"; }

異步請求響應數據:

  • 名稱: @ResponseBody
  • 類型: 方法注解、返回值注解
  • 位置:處理類中的方法前方
  • 作用:將異步提交數據組織成標準請求參數格式,并賦值給形參

方法返回值為Pojo時,自動封裝數據成json對象數據

@RequestMapping("/ajaxReturnJson") @ResponseBody // 如果不加這個注解會變成在瀏覽器彈框展示,加上這個注解就是告訴springMVC不要用視圖解析,把接收的信息當成字符串解析 public User ajaxReturnJson(){System.out.println("controller return json pojo...");User user = new User();user.setName("Jockme");user.setAge(40);return user; }

方法返回值為List時,自動封裝數據成json對象數組數據

@RequestMapping("/ajaxReturnJsonList") @ResponseBody //基于jackon技術,使用@ResponseBody注解可以將返回的保存POJO對象的集合轉成json數組格式數據 public List ajaxReturnJsonList(){System.out.println("controller return json list...");User user1 = new User();user1.setName("Tom");user1.setAge(3);User user2 = new User();user2.setName("Jerry");user2.setAge(5);ArrayList al = new ArrayList();al.add(user1);al.add(user2);return al; }

異步請求-跨域訪問:

當通過域名A下的操作訪問域名B下的資源時,不同服務間(不同的域)的訪問就是稱為跨域訪問,跨域訪問時要加上@CrossOrigin注解,否則會出現無法訪問的現象(也就是A服務訪問的還是A服務,B服務訪問的還是B服務,跨域要做到的是,不同服務訪問的資源路徑是一樣的)

怎么才算兩個不同的域,下面三條只要有一個不同就算是跨域

  • 請求協議不同
  • ip地址不同
  • 端口號不同
  • 域名不同(兩個服務都在同一個服務器上,但是域名不同,互相訪問也是跨域)
  • 跨域環境搭建:

    為當前主機添加備用域名

    • 修改本機的hosts文件
    • 格式: ip 域名(注意本機地址和域名間是有個空格的哈)
    • 例:127.0.0.1 www.itzhuzhu.com

    動態刷新DNS

    • 命令: ipconfig /displaydns
    • 命令: ipconfig /flushdns

    跨域訪問支持:

    • 名稱: @CrossOrigin
    • 類型: 方法注解 、 類注解
    • 位置:處理器類中的方法上方 或 類上方
    • 作用:設置當前處理器方法/處理器類中所有方法支持跨域訪問
    @RequestMapping("/cross") @ResponseBody //使用@CrossOrigin開啟跨域訪問 //標注在處理器方法上方表示該方法支持跨域訪問 //標注在處理器類上方表示該處理器類中的所有處理器方法均支持跨域訪問 @CrossOrigin public User cross(HttpServletRequest request){System.out.println("controller cross..."+request.getRequestURL());User user = new User();user.setName("Jockme");user.setAge(39);return user; }

    總結

    以上是生活随笔為你收集整理的SpringMVC中的异步请求-跨域访问的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。