2013년 5월 14일 화요일

Spring + Mybatis + Restful 환경구축 (3)

두번째 글에서 mybatis 설정 까지 했습니다.

이제 Restful 이 남았네요.

그전에 간단히 Restful 이 뭔지 한줄 설명을 하자면

기존에 웹페이지는 서버에서 페이지를 요청할때 필요한 값들을 url 자체에 올려서 하거나 패킷안에 데이터로 넣어서 보냈습니다.

url 이 GET

패킷에 넣는걸 POST 방식이라 합니다. HTTP REQUEST METHOD 라고 아마 패킷에 명시되어 있습니다.

이외에도 여러개가 더 있습니다.

이렇게 구분되어진 어떠한 요청 방식이 나누어져 있는데 이를 이용한 페이지 요청방식 이라고 할 수 있겠네요.

보통 SQL 과 연관되서 GET은 SELECT, POST 는 CREATE 같은 DML ,DDL 같은 쿼리문의 차이를 이용해서 서비스 한답니다.

한줄아니네요.. 암튼 이건 대충 그렇다는거고 자세한 사항은 직접 찾아보세요^^

전 구축만 할테니..

자 시작합시다.

저같은 경우는 웹페이지에 어떠한 값을 요청하거나 주는걸 모두 Ajax JSON 을 통해 주고 받습니다. 본 구축방법도 JSON을 이용한 구축방법에 대해 포스팅 하겠습니다.

JSON을 이용하기 위해서는 Spring Framework 이외에도 Jersey 라는 Framework 가 필요합니다.

Jersey 가 무엇인지는 난 안갈켜줍니닷. 난 구축만 할 뿐..

자 갑시다.

일단 필요한 API 를 Maven 을 통해 설정합니다.

pom.xml 을 열고 dependency 에서 com.sun.jersey 를 검색합니다.

image

이중 여러개가 필요한데 저희가 필요로 하는것은

jersey-server
jersey-servlet
jersey-json
jersey-spring

입니다. 모두 찾아서 추가해 주세요.

이제 소스상에서 구현하면되요? jersey는 간단하죠??

사실 Annotation을 사용한다는 것 이외에는 Framework 라고 하기에는 약한감이 있고 그냥

API 라고 생각하셔도 무난할 듯 합니다.

앞서 jersey를 이용한 구현부를 이미 한번 보았는데요

밑에서 보시죠


image

바로 CommonService 입니다.

근데 보시면 클래스선언 위에

@Path("/test") 가 있습니다.

이는 만약 저희 홈페이지가

http://localhost/gn/

가 기본주소 라면

https://localhost/gn/test

위 주소 뒤에 /test/{필요한 파라미터들} 처럼 넣어서 POST 혹은 GET 방식으로 REQUEST

하게 되면 그 REQUEST METHOD 에 따라 알맞는 함수를 CALL 하고 결과를 반환합니다.

예로 저 위에 소스상에서는

POST 방식은

image

이 함수가 실행되죠

선언은

@POST 하고

@Consumes 은 결과로 제공되는  Content-Type 을 의미합니다.

반대로 웹에서 서버로 제공하는 Content-Type을 명시하기도 하는데 이때는

@Produces 를 사용합니다. 저는 JSON을 사용 함으로 위와같이 하였으나

보통은 "text/plain" 이나 "text/html" 을 넣으면 됩니다.

ex) @Comsumes("text/plain")

이제 이 함수가 실행되는건 알았는데 결과를 return 해야겠죠??

보통 POST 는 SQL 로 치면 테이블 Create 같은 쿼리를 매칭 하기 때문에 요청에 대한 결과로는 200 OK 같은 ' 아 잘 처리됬고 결과 굳 ' 이라고 웹에 날려줍니다.

위와같이 200 을 상태로 넘기면 되겠죠??

그외 GET 에 대해 잠시 살펴보죠

image

POST 와 다르다 하면

또 @Path 가 등장하는 것이겠죠??

이는 /test/{mainCode} 를 의미 합니다.

만약 내가 어떤 테이블에 mainCode 가 100 인 로우를 검색해서 결과를 JSON 으로 받고싶다면

GET 방식으로 http://localhost/gn/test/100

으로 요청하면 되는거죠

쉽죠??~!!!

실제로 이 코드들이 되는지를 살펴보기 위해서 저는

Google Chrome Extension 중에 'Advanced REST Client' 라는걸 사용합니다.

그모습은 다음과 같구요

이걸 이용해서 다음과같이 GET 방식으로 SEND 하면

image

다음과 같이 200 OK 와

JSON 데이터가 들어 있음을 확인 할 수 있습니다.

요청 주소는 @Path에 맞춰서

http://localhost/gn/test/main_

을 요청했고

mainCode = main_ 을 요청한거죠..

잘 되네요^^

헌데 아마 아직 제가 ApplicationContext 에 대해 언급하지 않은거 같은데 이는 걍 소스를 보여드리께요

image

위와 같구요 그 위치는 /WEB-INF/spring/applicationContext.xml 이네요

보통 프로젝트를 생성하면 root-context.xml이 같은 디렉토리에 생성되는데 저는 그냥

새로 만들어서 사용했습니다. 그렇기 때문에 이를 spring 에도 설정을 해줘야 합니다.

우선 프로젝트 우클릭 -> properties 열어 주시고요

image

여기서 Scan 합니다.

근데..왜 난 안될까요.. 다시 properties 여니까 자동으로 설정되네요..

여러분도 그런가요^^?

아마 자동으로 잡히는거 같습니다만 안되는 분은 Scan 이나 Add를 통해 꼭 ApplicationContext.xml 을 등록해주세요.

이상

Spring + Mybatis + Restful 구축을 마칩니다.

사이사이 엄청난 양의 설명과 개념은 다 뺏습니다.

왜냐면 저같은 경우는 스프링을 하나하나 공부하면서 여기까지 구축하였는데

그때마다 드는 생각이 일단 구성된 모습을 보고싶다. 그 후 이렇게 해야만 하는 이유를 공부해야 뭔가 순서가 맞을거 같다.. 라는거 였습니다.

그래서 구성된 모든 모습을 딱 보고난 후에 책을 보거나 한다면 이해가 더욱 잘되겠죠??

모두 아시다시피 Spring관련 책들은 엄청 두껍고..양이 많습니다.. 그만큼 많은 개념과 설명이 필요하다는 것이겠지요. 하지만 아마 한 5장이나 절반정도는 리팩토링과 스프링의 개념설명 입니다. 그 후 구축을 시작하고 예제를 진행하게 됩니다. 아마 스프링을 시작하는 뉴비들의 장벽이라고 할 수도 있겠지요.. 하지만 분명 중요합니다. 엄청 중요한 부분이기 때문에 저는 다 보기를 추천드리고요.. 그래도 저는 구축부터 한번 딱 해보는게 좋다고 생각합니다. 뭐 설명은 다때려치우고 마지막의 모습을 딱 보고 난 후에 공부를 하는게 좋다고 생각해서 진행하게된 블로깅 입니다. 그리고 스프링의 특성상 이클립스 IDE 를 사용하기 때문에 ( 스프링에서 따로만든 STS 라고도 있습니다만 이또한 이클립스를 기반으로 합니다 ) IDE 와의 설정 싸움이 시작됩니다. JAVA 계열을 하는 모든 분들은 잘 아시겠지만 이게 사용하기가 쉽지 않습니다.. VS2012 나 2010 을 사용하는 주로 C# , C/C++ 를 하시는 분들은 이클립스를 매우 싫어하죠?? 저도 마찬가지입니다. 저는 VS 를 싫어해요.. 엄청불편하니까요..언어에 필요한 요소가 있고 다 필요한게 있고 그런겁니다. 알맞게 사용하면 됩니다. 갑자기 언어 이야기를 하는데.. 뭐 아무튼 이클립스에서 스프링을 구축하는 방법을 프로젝트 생성만 하면 끝날 문제가 아니기에 이러한 과정이 필요한 거겠죠??

그래도 아마 제 글만보고 따라해도 안될 가능성이 있습니다.. 그러한 분들은

댓글을 달아주시거나 메일을 적어주시면 이 소스자체를 드리겠습니다.

기능자체는 없으니 딱히 아까운게 없네여.

뭐 사실 우리나라 특성상 자기가 습득한 기술을 꽁꽁 숨기고 공유안하는 경우가 허다한데

그러한 행동은 우리나라 IT 발전이 더디게 하는 큰 원인이 되겠지요. 결국 자신에게 돌아옵니다.

물론 잘못된건 아닙니다. 하지만 나만 잘하고 내옆에 사람이 못하면 결국 나는 야근해야 하는겁니다. 잘생각하세요. 다 잘해야 다 좋은거에요. 그래서 복사도 다되고.. 다만 출저는 남겨줘야겠죠 최소한..

그러면 이만 ^^

ps. 댓글은 제폰에 실시간으로 푸시되니까 최대한 빨리 답변드리겠습니다 ^^




댓글 없음:

댓글 쓰기