앞에서 말 0.
기반 SpringMVC (VII) : 사용자 정의 형식 변환기 프로젝트
1. 원본 항목과 빌드 경로에 기초 항아리 패키지를 재 도입
2. 새 패키지 com.springmvc.demo.bean하고, 새로운 사람 카테고리
패키지 com.springmvc.demo.bean; 공용 클래스 사람 { 개인 문자열 이름; 개인 정수 나이; 공공 문자열 getName () { 반환 이름; } 공공 무효 에서는 setName (문자열 이름) { 이 .name을 = 이름; } 공공 정수 getAge () { 반환 시대; } 공공 무효 setAge (정수 연령) { 이 .age = 나이; } @Override 공공 문자열 toString () { 반환 "사람들 [이름 ="+ 이름 + ", 연령 ="+ 나이 +를 "]" ; } }
3. 새로운 JsonController 클래스
패키지 com.springmvc.demo.controller을; 수입 org.springframework.stereotype.Controller; 수입 org.springframework.web.bind.annotation.RequestBody; 수입 org.springframework.web.bind.annotation.RequestMapping; 수입 org.springframework.web.bind.annotation.ResponseBody; 수입 com.springmvc.demo.bean.People; @Controller 공공 클래스 JsonController { (@RequestMapping "/initJson.action" ) 공공 문자열 초기화 () { 반환 "JSON을" ; } / ** * @RequestBody : 주석에 대한 JSON 문자열 정보를 변환하는 사람들의 클래스의 필드에 매핑 * @ResponseBody :注解用于将实体对象转换成JSON格式 * 파라미터 : 명 * @return * / @RequestMapping (값 = "/ json.action" ) 공공 @ResponseBody 사람들 jsonTest (@RequestBody 사람 사람) { 에서 System.out.println (명); 반환 사람; } }
4. 새로운 json.jsp 페이지
<% @ 페이지 언어 = " 자바 " 의 contentType = " text / html과; 문자셋 = UTF-8 " pageEncoding = " UTF-8 " %> <! DOCTYPE html로의 PUBLIC "- // W3C // DTD HTML 4.01 과도 // EN" "http://www.w3.org/TR/html4/loose.dtd" > < HTML > < 머리 > < 메타 HTTP-당량 = "Content-Type을" 내용 = "text / html과; 문자셋 = UTF-8" > < 제목 > 여기에 삽입 제목 < 입력 = "텍스트 / 자바 스크립트" SRC를 = "$는 {pageContext.request.contextPath은} /js/jquery-1.12.4.min.js" > </ 스크립트 > </ 머리 > < 몸 > :姓名< 입력 유형 = " 텍스트 " ID ="이름 " /> < BR /> 年龄: < 입력 유형 ="텍스트 " ID ="나이 " /> < BR /> < 버튼 타입 ="버튼 " 의 onclick ="의 doPost (); " > > < 스크립트 유형 = "텍스트 / 자바 스크립트" > 기능 의 doPost을 () { var에 이름 = document.getElementById를 ( " 이름 " ) .Value; var에 나이 = document.getElementById를 ( " 나이 " ) .Value; $ 아약스 ({ URL : " json.action " , 유형 : " POST는 " , // 요청 정보는 엄격하게 JSON 문자열 데이터는 다음 JSON.stringify ({ " 이름 ":이름,「연령 」: 나이}) // 요청 파라미터 스트링 JSON으로 설정 ,. UTF 8- 부호화 의 contentType : " 파일 어플리케이션 / JSON은, 캐릭터 = UTF-8. " , // 리턴 값 JSON 형식 설정이 제공되지 않을 수도 dataType와 : " JSON " , 성공 : 기능 (데이터) { 경고 (data.name + " --- " + data.age); } }); } </ 스크립트 > </ HTML >
원본 항목 구성 인터셉터 이후 5. 새로운 정보 제어부 복귀 내부에있어서의 ModelAndView postHandle 개체, 개체의 ModelAndView가 null 때문에 여기에 적합하지 않은 데이터에 대해 리턴되는 JSON 요청한다 구비 뉴스 널 포인터 예외, 그래서 설정 정보 중 1 코멘트
@Override 공공 무효 postHandle (HttpServletRequest의 요청, 응답 개체 처리기, HttpServletResponse를 의 ModelAndView의 ModelAndView)이 발생 예외 { 에서 System.out.println을 ( 는 "postHandle를 호출 ...... ModelAndView를 반환하는 컨트롤러에서 호출 된 후" ); // 에서 의 ModelAndView 객체는 새로운 데이터 객체 추가 반환 // modelAndView.addObject ( "하는 currentDate"새 새로 만들기 날짜 ()); }
6. 액세스 HTTP : // localhost를 : 8080 / springmvc_demo / initJson.action 페이지에 json.jsp 점프, 입력 정보 보내기 버튼을 클릭합니다
인쇄 정보 데이터 및 반환 JSON 데이터가 페이지 정보와 배경에서 실현 된 보낼 아약스 JSON을 볼 수 있습니다.
제 단차 피트
본 실시 예에서는이다 :
(1). Ajax 요청
데이터의 값이 엄격한 JSON 문자열 속성 경우, 기록 할 수없는 { "이름"이름, "나이"나이}이 양식, 따옴표의 문자열을 사용할 수있는 경우는 JSON.stringify ({ "이름" "나이"이름 : 나이}) 변환;
contentType의 속성 "; 문자셋 = UTF-8 애플리케이션 / JSON"로 설정하는 단계;
(2). 항아리 包
세 새로 가져온 항아리 패키지가 필요합니다. 이것은 채우기 구멍이 약간의 시간이 걸린는 더 나은 물론, 나도 몰라 수없는 삶과 죽음의 자체 테스트의 움직이지 않는 패키지의 일부가 발견 왜이 세 항아리 패키지 전달 된 요청에 도입된다;
(삼). springmvc.xml
추가가 원하는 <MVC : 주석 중심> </ MVC : 주석 중심> 태그 항목, 양식에 매핑 및 주석 프로세서 어댑터를 추가 할뿐만 아니라이 프로세서를 추가 할뿐만 아니라, 메시지 컨버터의 일련의 추가, 메시지 형식 변환기 JSON 포함
이 태그를 추가하지 않으면, 당신은 주석이 메시지 JSON 형식 변환기의 구성뿐만 아니라가 어댑터 선언 spring3 및 spring4 더 이상 2보다 이후 잭슨의 메시지 컨버터 이름이 약간 다른 구성을보다
spring4 더
<! - 문 주 어댑터 -> < 빈 클래스 = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" > < 속성 이름 = "MessageConverters" > < 목록 > <! - JSON 형식으로 추가 메시지 변환 -> < 빈 클래스 = "org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" > </ 빈 > </ 목록 > </ 속성 > </ 빈 >
spring3
<! - 문 주 어댑터 -> < 빈 클래스 = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" > < 속성 이름 = "MessageConverters" > < 목록 > <! - JSON 형식으로 추가 메시지 변환 -> < 빈 클래스 = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" > </ 빈 > </ 목록 > </ 속성 > </ 빈 >
또는에 대한 추가 작업 부하에서 <MVC : 주석 중심> </ MVC : 주석 중심> 태그 비교를 쉽게.
어퍼 (4) .Controller 방법
JSON 문자열은 주석 @RequestBody를 사용하는 엔티티 클래스 속성에 매핑;
반환 유형의 엔티티 클래스는 방법 또는 사용 가치 형 주석 @ResponseBody 전에 메서드가 반환에 필요한 JSON 형식으로 변환합니다.