springMVC接口实现跨域访问:
springMVC框架通过@CrossOrigin注解的方式实现接口的跨域访问java示例代码:
package com.jmst.httpservice;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@CrossOrigin(origins="*",maxAge=3600) //跨域请求 origins=允许请求的地址 【*】允许所有的请求地址;前台请求需要注意设置contentType和@RequestMapping中的produces值相同
@RequestMapping(value="/sys/api",method={RequestMethod.POST,RequestMethod.GET})
public class httpServer extends BasciAction{
@RequestMapping(value="/postTest",method=RequestMethod.POST,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public Map<String,Object> postTest(@RequestBody JSONObject jsonObject,@RequestHeader HttpHeaders headers){
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag", 1);
map.put("msg", "成功");
return map;
}
}
前端ajax调用示例:
需要注意contentType必须和后台RequestMapping注解中的produces值相同
$.ajax({
type: "POST",
url:"http://localhost:8080/jmst_touch/sys/api/postTest",
data: JSON.stringify({
"startTime":"2020-01-20",
"endTime":"2021-01-20"
}),
dataType:"json",
async:false,
contentType: "application/json",
success: function(data){
alert(data.msg);
}
});