SpringMVC JSON 데이터 상호작용 및 RESTful 지원 실현 방법

JSON 개요
JSON(JavaScript Object Notation,JS 대상 표기)은 경량급 데이터 교환 형식 으로 최근 몇 년 사이 에 유행 하기 시작 했다.JSON 은 자 바스 크 립 트 를 기반 으로 한 키 집합 으로 C,C++,C\#,자바,자 바스 크 립 트,Per,Python 등 다른 언어의 약속 을 사용 하고 프로 그래 밍 언어 에 완전히 독립 된 텍스트 형식 으로 데 이 터 를 저장 하고 표시 한다.이러한 특성 으로 인해 JSON 은 이상 적 인 데이터 상호작용 언어 가 되 었 고 읽 기 쉽 고 작성 하기 쉬 우 며 기계 적 으로 해석 하고 생 성 하기 도 쉽다.
XML 과 마찬가지 로 JSON 도 일반 텍스트 에 기반 한 데이터 형식 이다.초보 자 는 JSON 을 사용 하여 간단 한 String,Number,Boolean 을 전송 할 수도 있 고 하나의 배열 이나 복잡 한 Object 대상 을 전송 할 수도 있다.
JSON 은 다음 과 같은 두 가지 데이터 구 조 를 가지 고 있다.
1.개체 구조
대상 구 조 는"{"로 시작 하여"}"로 끝 납 니 다.중간 부분 은 0 개 이상 의 영어 로 구성 되 어 있 습 니 다.그 중에서 key 와 value 사이 도 영어 입 니 다.

{
keyl: valuel,
key2: value2,
……
}
2.배열 구조
배열 구 조 는'['로 시작 하여']'로 끝난다.중간 부분 은 0 개 이상 의 영어","구 분 된 값 의 목록 으로 구성 된다.

[
valuel,
value2,
……
]
JSON 데이터 변환
Spring 은 브 라 우 저 와 컨트롤 러 클래스(Controller)간 의 데이터 상호작용 을 실현 하기 위해 HttpMessageConverter 인 터 페 이 스 를 제공 하여 이 작업 을 완성 합 니 다.이 인 터 페 이 스 는 요청 정보의 데 이 터 를 T 형식의 대상 으로 변환 하고 T 형식의 대상 을 요청 방법의 매개 변수 에 연결 하거나 대상 을 응답 정보 로 전환 하여 브 라 우 저 에 전달 하 는 데 사용 된다.
Spring 은 HttpMessageConverter 인터페이스 에 많은 실현 클래스 를 제공 하 는데 이런 실현 클래스 는 서로 다른 유형의 데 이 터 를 정보 변환 할 수 있다.그 중에서 MappingJacksona2HttpMessageConverter 는 Spring MVC 에서 JSON 형식 요청 응답 을 기본 으로 처리 하 는 실현 클래스 입 니 다.이 구현 클래스 는 Jackson 오픈 소스 패키지 읽 기 쓰기 JSON 데 이 터 를 이용 하여 자바 대상 을 JSON 대상 과 XML 문서 로 변환 하 는 동시에 JSON 대상 과 XML 문 서 를 자바 대상 으로 변환 할 수 있 습 니 다.
MappingJacksona2HttpMessageConverter 를 사용 하여 데 이 터 를 변환 하려 면 Jackson 을 사용 해 야 합 니 다.
의 오픈 소스 패키지,개발 에 필요 한 오픈 소스 패키지 와 그 설명 은 다음 과 같다.
  • jackson-annoations-2.8.8.Jar:JSON 주해 팩 전환.
  • jackson-core-2.8.8.jar:JSON 핵심 패키지 전환.
  • Jackson-databind-2.8.8.jar:JSON 이 변환 한 데이터 바 인 딩 패키지.
  • 주해 식 개발 을 사용 할 때 두 가지 중요 한 JSON 형식 으로 주해@RequestBody 와@ResponseBody 를 변환 해 야 합 니 다.


    springmvc-config. xml:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    	<!--         -->
    	<context:component-scan base-package="com.ssm.controller" />
    	<!--        -->
    	<mvc:annotation-driven />
    	<!--            ,       ,           -->
    	<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
    	<!--         -->
    	<bean id="viewResoler"
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<!--      -->
    		<property name="prefix" value="/WEB-INF/jsp/" />
    		<!--      -->
    		<property name="suffix" value=".jsp" />
    	</bean>
    </beans>
    구성 요소 스캐너 와 보기 해석 기 뿐만 아니 라 Spring MVC 의 주석 구동과 정적 자원 접근 맵 mvc:resources.../도 설정 되 어 있 습 니 다.이 중설정 은 Request Mapping Handler Mapping 과 Request Mapping Handler Adapter 두 개의 Bean 을 자동 으로 등록 하고 읽 기와 쓰기 XML,읽 기와 쓰기 JSON 등 기능 을 지원 합 니 다.화면 음악:resources.../요 소 는 정적 자원 의 접근 경 로 를 설정 하 는 데 사 용 됩 니 다.웹.xml 에 설 정 된"/"는 페이지 에 도 입 된 정적 파일 을 차단 하기 때문에 차단 후 페이지 에서 정적 자원 파일 을 찾 을 수 없습니다.그러면 페이지 오류 가 발생 할 수 있 습 니 다.정적 자원 의 접근 맵 설정 을 추가 하면 프로그램 은 자동 으로 경 로 를 설정 하여 정적 내용 을 찾 습 니 다.
    json.jsp:
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>  JSON  </title>
    	<script type="text/javascript"
       src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js">
    	</script>
    	<script type="text/javascript">
    	function testJson(){
    		//         
    		var loginname=$("#loginname").val();
    		var password=$("#password").val();
    		$.ajax({
    			url:"${pageContext.request.contextPath}/testJson",
    			type:"post",
    			//data       
    			data:JSON.stringfy({loginname:loginname,password:password}),
    			//             JSON   
    			contentType:"application/json;charset=UTF-8",
    			//            JSON   ,       
    			dataType:"json",
    			//       
    			success:function(data){
    				if(data!=null){
    					alert("        :"+data.loginname+"   :"+data.password);
    				}
    			 }
     	});
    	}
    	</script>
    	</head>
    	<body>
    		<form>
    		   :<input type="text" name="loginname" id="loginname" /> <br />
    		  :<input type="password" name="password" id="password" /> <br />
    		<input type="button" value="  JSON  " onclick="testJson()" />	
    		</form>
    	</body>
    </html>
    AJAX 에는 특별히 중요 한 속성 3 개가 포 함 돼 있 는데 그 설명 은 다음 과 같다.
  • data:즉,요청 할 때 가지 고 있 는 데이터 입 니 다.JSON 형식 을 사용 할 때 규범 을 작성 하 는 것 에 주의해 야 합 니 다
  • contentType:요청 데이터 가 JSON 형식 일 때 값 은 application/json 이 어야 합 니 다
  • dataType:응답 데이터 가 JSON 일 때 dataType 속성 을 정의 할 수 있 고 값 은 json 이 어야 합 니 다.그 중
  • dataType:"json"도 쓰 지 않 고 페이지 에서 응답 하 는 데이터 형식 을 자동 으로 식별 할 수 있 습 니 다
  • 상기 테스트 페이지 json.jsp 에 jquery.js 파일 을 도입 해 야 합 니 다.이 예 에 서 는 웹 콘 텐 츠 디 렉 터 리 에 있 는 js 폴 더 의 jquery-1.11.3.min.js 를 도입 하 였 습 니 다
  • CustomerController.java:
    
    package com.ssm.controller;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.ResponseBody;
    import com.ssm.po.Customer;
    @Controller
    public class CustomerController {
    	/*
    	 *        JSON  ,   JSON    
    	 */
    	@ResponseBody
    	public Customer testJson(@RequestBody Customer customer){
    		//      JSON    
    		System.out.println(customer);
    		return customer;
    	}
    }
    RESTful 지원
    RESTful 은 REST(Representational State Transfer)라 고도 부 르 는데 이 를 소프트웨어 구조 스타일 이나 디자인 스타일 로 이해 할 수 있다.
    RESTful 스타일 은 요청 인 자 를 요청 경로 로 바 꾸 는 스타일 입 니 다.예 를 들 어 전통 적 인 URL 요청 형식 은 다음 과 같 습 니 다.
    http://.../queryitems?id=1
    RESTful 스타일 을 사용 하면 전체 8746°RL 요청 은:
    http://.../items/1
    
    /*
    *   RESTful     ,      GET
    */
    @RequestMapping(value="/customer/{id}",method=RequestMethod.GET)
    @ResponseBody
    public Customer selectCustomer(@PathVariable("id") Integer id){
    	//      
    	System.out.println(id);
    	Customer customer=new Customer();
    	//    id         
    	if(id==10){
    		customer.setLoginname("wujit");
    	}
    	//  JSON     
    	return customer;
    }
    @RequestMapping(vaue="customer/{id}",method=RequestMethod.GET)주 해 는 요청 경로(인자 포함)와 방식 에 일치 합 니 다.그 중에서 vaue="/user/{id}"은"/user/{id}"로 끝 나 는 요청 과 일치 할 수 있 음 을 표시 합 니 다.id 는 요청 중의 동적 매개 변수 입 니 다.method=RequestMethod.GET 는 GET 방식 의 요청 만 받는다 고 표시 합 니 다.방법 중의@PathVariable("id")주 해 는 요청 인 자 를 수신 하고 연결 하 는 데 사 용 됩 니 다.요청 URL 의 변 수 를 방법의 형 삼 에 비 출 수 있 습 니 다.요청 경로 가"/user/{id}"이면 요청 인자 의 id 가 방법 형 삼 이름 id 와 같 으 면@PathVariable 뒤의"("id")"를 생략 할 수 있 습 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기