개발/JAVA

server to server에서 DATE 전송. jsp에서 포멧에 맞춰 출력하기.

신매력 2014. 10. 15. 15:48

아.. 블로그에 엄청 오랜만에 글쓰네 ㅋㅋ 쓸건 많았는데.

 

어쨌든 이상한 일이 일어나서 써본다.

 

 

내가 하려던건, 

1. 어드민 서버 -> API 서버로 호출을 한다.

2. 날짜(Date) 정보를 API 서버로부터 받아온다.

3. Admin의 jsp에 날짜 정보를 뿌린다.

 

 

이상한 점은

API에서 등록날짜를 어드민으로 보내줄 때 등록날짜를 Date로 보내줬고,

받는 어드민쪽에서도 Date로 받았는데.

디버깅해보면 값이 잘들어있고

jsp에서 출력하면... 타임스템프값으로 출력된다. 

 

{createdAt=1413339994000}    <- 이렇게..

 

내가 바란건 {createdAt=Web Oct 15 10:20:00 KST 2014} 와 같은 형태였다.

 

타임스템프(14133339994000 요런것)일 때 날짜를 포맷에 맞춰 출력하기 위해 아래와 같이 사용할 경우 에러가 발생한다.

 

<fmt:formatDate value="${createdAt}" pattern="yyyy-MM-dd HH:mm:ss" />

 

해결방법 두가지

 

1. Admin의 비즈니스 로직에서 API에서 보내준 날짜를 아싸리 long으로 받고,

new Date(타임스템프 값); 을 해서 Date 객체로 완전 변환한 뒤 jsp로 넘긴다.

 

2. jsp에서 어떻게든 해결한다.



전에도 한번 이런적 있었는데, 1번으로 했더니 이건 정말 아닌것같아서 2번 방법을 찾아봤다.
아래같이 하면 된다.

<jsp:useBean id="dateValue" class="java.util.Date" />
<jsp:setProperty name="dateValue" property="time" value="${createdAt}" />
<fmt:formatDate value="${dateValue}" pattern="yyyy-MM-dd HH:mm:ss" />

 

원인은 추측해보건데.. 서버투서버 호출만 하면 그러는 것을 봐서는

아마도 date객체더라도 통신할 때 표준으로는 타임스템프로 넘기기 때문에 

받은 쪽에서 제대로 변환이 안된 상태이다? 라는 생각.

 

아시는분 있으면 답변 부탁점요 ㅋㅋㅋ