Jsonpの実現
6235 ワード
ブラウザの「同ソースポリシー」のため、jsスクリプトは同ソース(同じプロトコル、ドメイン名、ポート)のリソースのみを呼び出すことができます.しかし、さまざまなドメインでjsスクリプトファイルをページに導入することは可能です.jsopはこの特性を利用して実現されます.例は以下の通りです.WebプロジェクトのDemo-1
package com.zzs.jsonp;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
public class JsonpServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
resp.setContentType("text/plain");
resp.setHeader("Pragma", "No-cache");
resp.setHeader("Cache-Control", "no-cache");
resp.setDateHeader("Expires", 0);
PrintWriter out = resp.getWriter();
JSONObject resultJSON = new JSONObject();
resultJSON.put("result", "Hello");
String jsonpCallback = req.getParameter("jsonpCallback");//
out.println(jsonpCallback+"("+resultJSON.toJSONString()+")");// jsonp
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
WebプロジェクトのDemo-2"java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title>jsonptitle>
<script type="text/javascript" src="js/jquery-1.10.2.min.js">script>
head>
<body>
<button id="btn1"> 1button>
body>
<script type="text/javascript">
$(document).ready(function(){
//jsonp
$("#btn1").click(function(){
$.ajax({
url:"http://10.168.3.36:8080/Demo-1/jsonp",
dataType:"jsonp",
type:"get",
async:false,
jsonp:"jsonpCallback",
success:function(data){
alert(data.result);
}
});
});
});
script>
html>