java 后台Jsonp处理方法

来源:互联网 发布:淘宝卖蚕丝被 编辑:程序博客网 时间:2024/05/16 11:02
1.JSONP 
是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。JSON系统开发方法是一种典型的面向数据结构的分析和设计方法,以活动为中心,一连串的活动的顺序组合成一个完整的工作进程。 

2.看下客户端 

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
        $.ajax({ 
             url:'http://localhost/jsonp_test1.json', 
             dataType:"jsonp", 
             jsonp:"jsonpcallback", 
             success:function(data){ 
                 var $ul = $("<ul></ul>"); 
                 $.each(data,function(i,v){ 
                     $("<li/>").text(v["id"] + " " + v["name"]).appendTo($ul) 
                 }); 
                 $("#res").append($ul); 
             } 
        }); 
    }); 
</script> 
</head> 
<body> 
    </body> 
</html> 

<ul></ul> 
<div id="res"></div> 

3.服务端

 第一种: 普通servlet 

String jsonp = request.getParameter("jsonpcallback") 
  String str = "[{""id"":""1"",""name"":""测试1""},{""id"":""2"",""name"":""测试2""}]" 
  str = jsonp + "(" +str+");" 
  response.Write(str) 

第二种 : 再看spring mvc服务端写法 

@RequestMapping(value="/jsonp_test1.json", method=RequestMethod.GET) 
@ResponseBody 
public JSONPObject login(HttpServletRequest request,HttpServletResponse response,@RequestParam String callback) throws Exception { 
ModelAndView model = new ModelAndView(); 
                  List l=new ArrayList(); 
for(int i=0;i<2;i++){ 
Otc otc = new Otc(); 
otc.setName("测试1"); 
otc.setId(i+1); 
l.add(otc); 



                   model.addObject("data", l); 

        return new JSONPObject(callback, model); 


通过JSONPObject实现了简单的jsonp的封装,JSONPObject是jackson包中的类