이 글은 springMVC의 json 데이터와 상호작용하는 방법에 대한 자세한 설명을 주로 소개하고 있는데, 에디터가 꽤 좋다고 생각해서 지금부터 공유하고 참고용으로 올려보겠습니다. 에디터를 따라가서 살펴보겠습니다.
프론트 데스크 코드:
function channel(){ //先获取选中的值 var channelId = $("#channelId option:selected").val(); //来判断发送的链接 if(channelId ==2){ **需要注意地方 start** var schoolBannerInfo = { "img": channelId, "title": channelId, "info": channelId, "channelId": channelId }; **需要注意地方 end** $.ajax({ url:"ceshijson", type:"post", dataType:'json', **需要注意地方 start** contentType:'application/json;charset=utf-8', data:JSON.stringify(schoolBannerInfo), **需要注意地方 end** success:function(data){ alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown){ alert("Error") alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }
굵게 표시된 부분이 주목하셔야 할 부분입니다.
contentType:'application/json;charset=utf-8'은 생략할 수 없습니다. 그렇지 않으면 415 오류가 보고됩니다.
결국 제가 보내는 것은 jsonstring이므로, 오는 데이터가 json 데이터임을 서버에 알려주어야 합니다.
JSON.stringify()는 JavaScript 객체를 json 문자열로 변환합니다.
JSON.parse(jsonstr)는 json 문자열을 JavaScript 객체로 변환합니다.
보충 지식: json은 실제로 JavaScript의 하위 집합입니다.
참조 주소: www.jb51.net/article/35090.htm
백엔드 코드:
pojo 클래스:
public class SchoolBannerInfo { private Integer id; private Date createTime; private String img; private String title; private String info; private Integer seq; private Integer schoolId; private String type; private boolean enable; private String link; private String channelId; }
get 및 set 메소드는 직접 생성하므로 여기에 게시하지 않겠습니다.
컨트롤러의 메서드:
@RequestMapping(value="/ceshijson",produces="application/json;charset=UTF-8") @ResponseBody public SchoolBannerInfo ceshijson(@RequestBody SchoolBannerInfo schoolBannerInfo) throws IOException{ // Map<String,Object> map = new HashMap<String,Object>(); // map.put("channelId", channelId); // ObjectMapper mapper = new ObjectMapper(); // channelId = mapper.writeValueAsString(map); return schoolBannerInfo; }
참고:
1. @RequestBody는 frontdesk json 데이터인데, 이 데이터를 pojo 클래스의 객체로 어떻게 수신하는지 분석하기 위해 반드시 이 Annotation을 사용해야 합니다.
2. json 데이터도 반환하고 싶기 때문입니다. 따라서 Java 객체를 json 문자열
으로 변환하려면 이 주석 @ResponseBody가 필요합니다. 3. @RequestBody 사용 시 프론트 데스크에서 전달되는 데이터는 json 문자열이어야 합니다. json 객체라면 에러가 발생합니다. 따라서 프런트엔드 데이터 부분에 data:{"channelId":2}라고 쓰면 작동하지 않습니다. {"channelId":2}는 json 객체이므로 외부 레이어에 '{"channelId":2}' 따옴표를 추가해야 합니다.
4. 메소드 반환 값이 String과 같은 단순 유형인 경우 어떻게 해야 할까요?
【관련 추천】
1. 특별 추천: "php Programmer Toolbox" V0.1 버전 다운로드
위 내용은 springMVC 처리 json 데이터에 대한 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!