자바 SpringMVC의 노트 (팔) : 아약스 JSON 데이터 및 반환 JSON 데이터를 보낼 수

앞에서 말 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 형식으로 변환합니다.

 

추천

출처www.cnblogs.com/antusheng/p/12660361.html