Jsoup学习

来源:互联网 发布:linux 卸载 工具 编辑:程序博客网 时间:2024/05/22 02:08
------------------------------------------


 什么是Jsoup:
   跨项目请求数据的时候,ajax不支持跨域请求,但是javascript支持,使用jsoup从跨域服务端返回json数据




 例子1:服务端A从服务端B获取数据
  1. 在项目1申明函数: 
   var getData = function(data){
alert(data.name+","+data.address);
};


  2. 在项目2中创建r1.js,调用函数,
getData({"username":"老张","password":"123"});


 3. 在项目1中引入项目2的js:
<script type="text/javascript" src="http://127.0.0.1:8080/jsonp02/r1.js"></script>


  那么这里项目2的getData({}) 函数引入,相当于调用了getData函数,只能可以获取项目2中返回的值
 


例子2: 请求servlet
  1. 项目1:


var getData = function(data){
alert(data.name+","+data.password);
};
 申明函数
2.  <script type="text/javascript" src="http://localhost:8080/MyJsoup2/MyJsoupServlet?id=1&jsonpCallback=getData"></script>


 请求servlet把请求参数名带过去,并且要把函数名做为参数传递过去


3. 项目2:servlet中获取参数并且返回
 int id = Integer.parseInt(request.getParameter("id")); //获取服务A请求参数


String json = "{\"id\":\""+id+"\",\"name\":\""+"小明"+"\",\"address\":\""+"湖南郴州"+"\"}";
String jsonp = request.getParameter("jsonpCallback")+"("+json+")"; //获取的函数名,根据函数名返回json数据

response.setContentType("text/plain;charset=utf-8");
response.getWriter().println(jsonp);  //


 


 例子3. 实际应用中,jquery对这种技术有封装,这样的话就不用传递函数名,不用申明函数


 项目1写法:
$(function(){
$.getJSON("http://localhost:8080/MyJsoup2/MyJsoupServlet?jsonpCallback=?",{id:3},function(data){
alert(data.id+","+data.name+","+data.address);
});
});


 固定写法,项目2不变


  ------------------------------------------------------