1. 程式人生 > >Spring MVC(學習筆記七)控制器的註解(六) -之處理跨域操作(@CrossOrigin)

Spring MVC(學習筆記七)控制器的註解(六) -之處理跨域操作(@CrossOrigin)

@CrossOrigin  進行跨域資源訪問的處理操作

在這個案例中我返回的值為json型別,所以我們要先引用jars,pom.xml檔案:

<dependency>
<groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
</dependency>
在spring-mvc.xml中新增配置:
<mvc:annotation-driven  enable-matrix-variables="true">
    <mvc:message-converters>
        <ref bean="fastJsonHttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
    <!--設定轉換時特性-->
    <property name="features">
        <array>
            <value>WriteNullBooleanAsFalse</value>
            <value>WriteNullListAsEmpty</value>
            <value>WriteNullStringAsEmpty</value>
            <value>WriteNullNumberAsZero</value>
        </array>
    </property>
</bean>
再編寫一個CrosController類:
@Controller
@RequestMapping(value = "/cros")
public class CrosController {
    // 可以進行跨域操作的地址:這裡我是使用了HBuilder編寫了一個頁面,進行了非同步請求
    @CrossOrigin(value = {"http://127.0.0.1:8020"})
    //produces:指明響應content-type
    @GetMapping(value = "loadUser",produces={"application/json"})
    @ResponseBody
    public User loadUser(){
        User user=new User();
        user.setId(123123);
        user.setName("mj");
        user.setPwd("1");
        return user;
    }
}
我在HBuilder這個軟體中寫了一個頁面:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /></head>
<body>
	<script src="js/jquery.js"></script>
	<script>
	$.ajax({
		type:"get",
		url:"http://localhost:8080/cros/loadUser",
		success:function(data){
            alert(data.id);
        }
	});
	</script>
</body>
</html>

這裡直接點選訪問:

出現頁面結果:

F12檢視: