상세 컨텐츠

본문 제목

R&D 2016 프로젝트3-03 스프링기반 Json Parser for Android

안드로이드+드론 제작

by 김일국 2015. 12. 20. 15:02

본문

이번 시간에는 STS내장DB인 HSQL에 입력된 Member자료를 스프링기반 JSP에서 Json 데이터로 출력하는 시간을 갖도록 하겠습니다.

1. 기존 HSQLDB의 member테이블을 이전 안드로이드 프로젝트에 맞게 변경

>> src/script/member_table.sql

기존, 

CREATE TABLE member (

id INTEGER PRIMARY KEY, 

name VARCHAR(20) NOT NULL, 

joined DATE

); 

신규,

CREATE TABLE member (

id INTEGER PRIMARY KEY, 

name VARCHAR(50) NOT NULL, 

username VARCHAR(50) NULL,

password VARCHAR(255) NULL,

joined DATE

); 

2. member 테이블 변경에 따른 Member개체 추가

>> src/sample/domain/Member.java

getter, setter 자동추가

3. 테이블 필드 2개추가에 따른 쿼리 수정

>> src/sample/ibatis/Member.xml

수정,

<insert id="add" parameterClass="Member">

insert into member (id, name, joined, username, password) values(#id#, #name#, #joined#, #username#, #password#)

  </insert>

 

<update id="update" parameterClass="Member">

update member set name = #name#, joined = #joined#, username = #username#, password = #password# where id = #id#

</update>

4. 출력 결과를 확인해 보변, 안드로이드 Json 출력부분에서 에러가 납니다. 즉, 스프링의 Json 출력 데이터가 안드로이드에서 원하는 데이터 형과 조금 틀린것을 확인 하실 수 있습니다.

- 정상Json 출력값: [{"name":"김일국","id":-1106575047,"password":null,"username":null,"joined":null}]

- 스프링Json출력값: {"list":[{"name":"김일국","id":-1106575047,"password":null,"username":null,"joined":null}]}

스프링Json출력값 최상위에 list 라는 멤버가 자동으로 붙는 다는 것을 알 수 있습니다.

안드로이드폰에서 제대로된 출력값을 얻을 수 있는 방법은 2가지 있습니다.

* 안드로이드소스 수정방법

>> src/main/java/core/JsonConverter.java > public ArrayList<T> toArrayList(String jsonString, Class<T> clazz) 메서드 수정

>> jsonString = jsonString.substring(jsonString.indexOf('['), jsonString.indexOf(']')+1);//문자열 추출 함수로 필요한 부분 추출

* 스프링프로젝트 수정방법

정상Json 출력값을 얻기 위해서, 스프링에서 사용하는 JsonView 클래스를 상속 받아서, 사용자JsonView를 만듭니다.

기존 JsonView설정 수정

>> web/WEB-INF/spring/webmvc-config.xml

>> 아래 bean 클래스를 스프링기본에서 상속받은 사용자 JsonView클래스로 변경 합니다.

<property name="defaultViews">

<list>

<!-- <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> -->

<bean class="sample.domain.MyMappingJacksonJsonView" />

</list>

</property>

- 신규 JsonView 파일

MyMappingJacksonJsonView.java

5. 마지막으로 지난 안드로이드프로젝트에서 SubActivity.java 파일의 접속경로를 jsp경로로 변경해 줍니다.

수정전: String url = "http://192.168.0.2/android/user_list.php?format=json";

수정후: String url = "http://192.168.0.2:8080/member/list.json";

스프링 프로젝트의 멤버변수인 joined 필드값까지 Json으로 출력되는 것을 확인 하실 수 있습니다.(아래)

다음시간에는 이번시간에 이어 스프링(자바)기반의 로그인 클래스의 JSON출력을 이용하여 안드로이드폰에서 로그인 연동하는 프로그램을 작업하도록 하겠습니다.

MyMappingJacksonJsonView.java
0.0MB

관련글 더보기

댓글 영역