jsonp和XMLHttpRequest用法异同,jsp+js+servlet+mysql

XMLHttpRequest版:

index.html:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
<%  
    String path = request.getContextPath();  
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()  
            + path + "/";  
%>  
  
  
  
  
  
My JSP 'index.jsp' starting page  
  
  
  
  
  
  
  
  
  
      
    
1 1 1
1 1 1
servlet:

 public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
          
        response.setContentType("text/xml;character=utf-8");  
        response.setHeader("Cache-Control", "no-cache");  
        try {  
            //创建Person对象,保存数据,如果有数据库的话,此处数据应该为从数据库中取出  
            
            classManager cl = new classManager();
            List list = new ArrayList();
            try {  
                //创建JsonArray对象,JSONArray则是[]包裹起来的一个数组(Array),此处调用方法将对象集合装入  
                JSONArray json = JSONArray.fromObject(list);  
                //JSONObject是一个{}包裹起来的一个对象(Object),此处希望以对象为单位进行操作,所以创建JSONObject对象  
                JSONObject jb = new JSONObject();  
                //将jsonArray对象装入  
                jb.put("person", json);  
                //输出Json数据,它就是一种特殊格式的字符串  
                response.getWriter().write(jb.toString());  
                  
                /*此处可以用另一种方式将数据装入Json,同样可以,只是前台接受的是JSONArray对象,是[]包裹起来的一个数组(Array) 
                 *JSONArray jsonArray = new JSONArray(); 
                 *JSONObject jb = new JSONObject(); 
                 *jb.put("person", json); 
                 *jsonArray.add(jb); 
                 *response.getWriter().write(jsonArray.toString()); 
                 */  
                  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  


jsonp版本:

index.jsp



<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
<%  
    String path = request.getContextPath();  
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()  
            + path + "/";  
%>  
  
  
  
  
  
My JSP 'index.jsp' starting page  
  
  
  
  
  
  
  
  
    
    
1 1 1 1
1 1 1 1


servlet:

 public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
          
        response.setContentType("text/json;character=utf-8");   
        try {  
            //创建Person对象,保存数据,如果有数据库的话,此处数据应该为从数据库中取出  
           classManager cl = new classManager();
           List list = new ArrayList();
           String callback = request.getParameter("callback"); 
           cl.showClass(list);
            try {
                //创建JsonArray对象,JSONArray则是[]包裹起来的一个数组(Array),此处调用方法将对象集合装入  
                JSONArray json = JSONArray.fromObject(list);  
                //JSONObject是一个{}包裹起来的一个对象(Object),此处希望以对象为单位进行操作,所以创建JSONObject对象  
                JSONObject jb = new JSONObject();  
                //将jsonArray对象装入  
                jb.put("person", json);  
                //输出Json数据,它就是一种特殊格式的字符串  
                response.getWriter().write(callback+"("+jb.toString()+")");  
                  
                /*此处可以用另一种方式将数据装入Json,同样可以,只是前台接受的是JSONArray对象,是[]包裹起来的一个数组(Array) 
                 *JSONArray jsonArray = new JSONArray(); 
                 *JSONObject jb = new JSONObject(); 
                 *jb.put("person", json); 
                 *jsonArray.add(jb); 
                 *response.getWriter().write(jsonArray.toString()); 
                 */  
                  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
XML版本

json版本




可以看出new XMLHttpRequest().responseText返回的是一串特殊的字符串,需要调用eval将其封装为json对象,然后对对象数组进行操作

而jsonp返回的是一个object对象,个人认为这里是json上传为object对象,然后对对象数组进行操作

博主刚入门,见识不深,如有指教,欢迎补充。

你可能感兴趣的:(jsonp和XMLHttpRequest用法异同,jsp+js+servlet+mysql)