一.@CrossOrigin:
当@CrossOrigin使用在类上时:
能解决该类下的方法的所有跨越问题,且不能加开放「跨越」请求地址;
写法:
import org.json.JSONObject;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.nio.charset.Charset;import java.util.List;import java.util.Map;@RestController@CrossOrigin//跨域public class CharactersIntroControll {//public static final Charset UTF=Charset.forName(\"UTF-8\");@AutowiredCharactersIntroImpl intro;
当@CrossOrigin使用在方法上时:
只能解决该方法的跨越访问问题而且要加开放访问地址;
@CrossOrigin(origins=“请求地址”)写法:
@CrossOrigin(origins = \"http://localhost:63342\")//跨域@RequestMapping(\"getAll\")@ResponseBodypublic List selectAllCharactersIntro(){List setAll=intro.selectAllCharactersIntro();System.out.println(setAll);return setAll;}
二.@RequestBody的使用:
当后端接口使用@RequestBody 而且用来进行接收的参数为String类型时:
1.前端最好使用对应的String 进行传值,否则会出现URL转码问题;
2.后端使用@RequestBody接收值时,前端要使用post请求;
后端接口写法:
@RequestMapping(value = \"addElement-string\")@ResponseBody//@RequestParampublic String addCharactersIntro(@RequestBody String jsonString){System.out.println(jsonString);//这里使用JsonMapper来处理jsonStr,比如转成需要的bean对象return \"添加成功\";}
前端请求写法:
1.通过form表单请求:
<form action=\"http://localhost:8080//addElement-string\" method=\"post\"><input name=\"name\"for=\"name\"type=\"text\"><input name=\"sex\"for=\"sex\"type=\"text\"><input type=\"submit\"></form>
2.通过ajax请求:
var json={\"name\":\"杨进燕\",\"date_of_birth\":\"1997-10-20\",\"characters_intro\":\"测试审批\",\"sex\":\"0\",\"ip\":\"CHINA20200105\"}var jsonStr = JSON.stringify(json); //将json对象转换为字符串$.ajax({url:\"http://localhost:8080//addElement-string\",type: \"post\",data: jsonStr,// dataType:\"String\",contentType : \"application/json;charset=UTF-8\",success : function(data){// var newData = JSON.stringify(data);alert(data);},err:function(er){alert(er)}});
三.踩坑点:
当后端接口使用@RequestBody 而且用来进行接收的参数类型是String时,如果前端使用json进行传值,则在后端接收到的参数会存在URl编码问题;
后台获取到参数后输出情况如下:
name=%E6%9D%A8%E8%BF%9B%E7%87%95& //中文date_of_birth=1997-10-20&characters_intro=%E6%B5%8B%E8%AF%95%E5%AE%A1%E6%89%B9&//中文sex=0&ip=CHINA20200105