一、首先angularJs實現跨域請求java思路
首先我先介紹一下Html端(前端),然后介紹一下后端java(后端采用MVC模式)。
二、$Http跨域請求方式跨域請求
前端代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <!--博客園老牛大講堂--> <script src="../js/angular.min.js"></script> </head> <body> <div ng-app="myApp" ng-controller="siteCtrl"> <script> //博客園老牛大講堂 //總的來說下面的模塊是固定的。跨域就按下面寫 var app = angular.module('myApp', []); app.controller('siteCtrl', function($scope, $http) { var k=$http({ method:'post', url: "http://127.0.0.1:8080/A/B", data:{id:"1",name:"老牛大講堂"}, headers:{'Content-Type': 'application/x-www-form-urlencoded'}, transformRequest: function(obj) { console.log(obj);//輸出的結果是請求的參數object var str = []; for(var p in obj){ str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); } return str.join("&"); }, responseType:"text" }); //博客園老牛大講堂 k.success(function(data){ console.log(data);//請求后的輸出數據 console.log(data.firstName);//根據屬性得到數據的值 //博客園老牛大講堂 }); }); </script> </body> </html>
后端代碼,關於java的json包裝
package Serlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Tools.A; public class B extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //http://127.0.0.1:8080/A/B?id=1&name=張三 //這個是訪問路徑加參數
//博客園老牛大講堂
//下面加的頭部是必須的,這是要求誰可以請求,誰不能請求 response.setHeader("Access-Control-Allow-Origin","*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type"); response.setHeader("Access-Control-Allow-Credentials", "true"); //博客園老牛大講堂 String id=new String(request.getParameter("id").getBytes("ISO-8859-1"),"GBK"); String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GBK"); System.out.println("用戶的id是:"+id+"他的名字是:"+name); //博客園老牛大講堂 String jsoncallback = "{\"firstName\":\"Brett\"}";//模擬一個固定的json數據,將來要用第三方jar包進行包裝。 PrintWriter out = response.getWriter(); out.println(jsoncallback); out.flush(); out.close(); } }