이번 시간에는 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 파일
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출력을 이용하여 안드로이드폰에서 로그인 연동하는 프로그램을 작업하도록 하겠습니다.
R&D 2016 프로젝트3-05 스프링기반 Json Parser for Android (0) | 2015.12.29 |
---|---|
R&D 2016 프로젝트3-04 스프링기반 Json Parser for Android (0) | 2015.12.26 |
R&D 2016 프로젝트3-02 스프링기반 Json Parser for Android (0) | 2015.12.19 |
R&D 2016 프로젝트3-01 스프링기반 Json Parser for Android (0) | 2015.12.15 |
R&D 2016 프로젝트1,2에 사용된 외부 라이브러리 분석 (0) | 2015.12.13 |
댓글 영역