码迷,mamicode.com
首页 > Web开发 > 详细

JSONP实现跨域

时间:2019-09-27 21:08:39      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:http   char   request   mapping   body   meta   san   user   private   

ajax使用jsonp实现跨域

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function(){
    $("#but").click(function(){
        $.ajax({
            type:"get",//请求方式必须为get
            url:"http://localhost:9090/user/findUser",//另一个项目的地址
            dataType:"jsonp",//类型必须是jsonp
            jsonp:"callback",
            success:function(data){
                alert(data);
                var str = "";
                for(i=0;i<data.length;i++){
                    str+= data[i].userid+" "+data[i].username+" "+data[i].userage+" ";
                }
                $("#show").html(str);
            }
        });
    });
});
</script>
</head>
<body>
    <span id="show"></span>
    <input type="button" value="OK" id="but"/>
</body>
</html>


 控制层的处理:



import java.util.ArrayList;
import java.util.List;

import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


//下面两种方式都可以
@Controller
@RequestMapping("/user")
public class UserController {

/*    @RequestMapping("/findUser")
    @ResponseBody
    public Object findUser(String callback){
        Users user = new Users(1, "admin", 20);
        Users user1 = new Users(2, "zhangsan", 22);
        Users user2 = new Users(3, "lisi", 24);
        List<Users> list = new ArrayList<>();
        list.add(user);
        list.add(user1);
        list.add(user2);
        //json转换
        MappingJacksonValue mv = new MappingJacksonValue(list);
        mv.setJsonpFunction(callback);
        return mv;
    }*/
@RequestMapping("/findUser")
@ResponseBody
public String findUser(String callback){
    Users user = new Users(1, "admin", 20);
    Users user1 = new Users(2, "zhangsan", 22);
    Users user2 = new Users(3, "lisi", 24);
    List<Users> list = new ArrayList<>();
    list.add(user);
    list.add(user1);
    list.add(user2);
    //json转换
    String json = JsonUtils.objectToJson(list);
    return callback+"("+json+")";
}
}

工具类:

/**
 * JSON转换工具类
 */
public class JsonUtils {

    // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();

    /**
     * 将对象转换成json字符串。
     * <p>Title: pojoToJson</p>
     * <p>Description: </p>
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
        try {
            String string = MAPPER.writeValueAsString(data);
            return string;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json结果集转化为对象
     * 
     * @param jsonData json数据
     * @param clazz 对象中的object类型
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json数据转换成pojo对象list
     * <p>Title: jsonToList</p>
     * <p>Description: </p>
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try {
            List<T> list = MAPPER.readValue(jsonData, javaType);
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }
    
}

 

JSONP实现跨域

标签:http   char   request   mapping   body   meta   san   user   private   

原文地址:https://www.cnblogs.com/-fpy/p/11600110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!