본문 바로가기

프로그래밍 이야기

(16)
[Spring 3.1.x~4.x] xml 설정의 변화 3.x 버전대의 스프링 프레임워크가 나온지 얼마 안된 것 같은데 벌써 4.1버전대가 릴리즈 됐다. 그래도 3.x 버전대까지는 종종 설정도 살펴보고 이것저것 시도해봤는데 프로젝트 때문에 한참을 못보다가 최근에 시간이 되서 바뀐건 없나 살펴보니 꽤 많이 바꼇다.. 예전 2.x버전대의 설정지옥에 비하면 요즘에는 많이 편해지긴 했지만 아직도 잘 돌아가게 설정 하려면 시간 깨나 잡아먹는 일이긴 하다. 그리고 설정이 간편해진 대신 구조가 복잡해서 모르고 복붙만 해서 쓰다보면 돌아가긴 하지만 잠재적인 위험을 가지고 있는 코딩을 할 수 있는 경우도 이번에 느꼈다. 보통 스프링 메이저 버전이 업그레이드 되면 한번씩 둘러보느라 이번에 최신버전으로 설치하고 테스트 해봤는데 설정에서 꽤 막혔다. 이 글에선 막혔던 부분과 해결..
[jQuery] 강력한 Select Box 디자인 플러그인 Select Or DIE 회사에서 조그마한 모바일 웹 개발 개선작업 프로젝트를 진행하고 있다. jQuery Mobile과 전자정부 프레임워크로 구성되어 있는데 사실 굉장히 작은 규모의 프로젝트라 전자정부 프레임워크 내부 API를 이것저것 사용할 일도 없고 사정상 지금 회사 에서 사용하는 노트북이 거의 10년전에 집에서 뒹굴던 노트북(싱글코어.. 램 2Gb)이라 이클립스가 무거우면 견디기가 어렵고 전자정부 프레임워크 개발환경은 왤케 무거운지.. validator 한번 돌아가면 노트북 팬이 터질듯이 돌아가고 손도 댈수 없을 정도여서 구조 리팩토링을 결심했다. 기존소스에서 전자정부 API를 사용하는 부분을 제거하고 Spring설정도 다시 잡고 하다보니 이틀이 꼬박.. 전자정부 프레임워크.. 참 좋긴한데 이번에는 제대로 신경질 나게 해..
[Spring Framework] RESTful Web Service와 JSP,URL Mapping 문제해결 보통 우리가 인터넷을 사용하면서 주소창에 흔히 볼수있는 주소 표현으로 다음과 같이.. http://xens.tistory.com/content/list.jsp?user=park&page=1 과 같은형태를 많이 보게 됩니다. 이를 RESTful 하게 표현하면 http://xens.tistory.com/content/list/user/park/page/1 과 같이 표현할 수 있게됩니다. 개념상으로는 단순히 이렇게 주소 표기를 위해서 뜬금없이 나타난 것은 아니고 'URI로 자원대상을 명시하고 Method로 자원에대한 행위를 정의한다' 를 베이스로 가지고 있는 아키텍쳐 이며 기본적으로 CRUD(Create, Read, Update, Delete)와 매치될수 있는 형태의 서비스 에서 쓰이고 있습니다. 저도 여기저..
XStream을 이용한 XML UnMarshalling(File, InputStreamReader, FileInputStream) 예제 #3
XStream을 이용한 XML Marshalling, UnMarshalling(InputStreamm, OutputStream) 예제 #2 1부에서는 HttpServletResonse의 getWriter()를 통해 마샬링한 데이터를 바로 출력하는 예제를 작성해 봤습니다. 이번에는 OutputStream으로 마샬링한 데이터를 저장하고 이를 InputStream으로 변환하여 언마샬링 처리하는 방법을 예제로 작성해보겠습니다. JAXB를 사용한 예제도 비슷하게 HttpUrlConnection을 통해 가져온 InputStream을 언마샬링 하는 예제가 있으니 참고하시기 바랍니다. ----------------------------------------------------------------------------------------------------------------- ※Object를 마샬링 후 OutputStream으로 저장한 후 Inp..
XStream을 이용한 XML Marshalling, UnMarshalling(HttpServletResponse getWriter()) 예제 #1 XStream을 통한 마샬링, 언마샬링 처리에 대해서 알아보겠습니다. 최근 JAXB(Java Architecture for XML Binding) API와 더불어 OXM(Object/Xml Mapping)에 많이 사용되고 있는 것 같네요. 스프링 프레임워크를 쓰시는 분들은 JAXB, XStream 모두 Spring OXM에 포함되어 있으므로 간단히 의존성 주입후 사용하시면 되겠습니다. 저는 따로 라이브러리를 받아서 사용 했습니다. 마샬링, 언마샬링 구현 방식은 JAXB와 거의 유사합니다만 가독성은 XStream이 더 간결했으며 대략적인 개념은 비슷한 라이브러리 들이지만 약간씩 차이가 있습니다. 개인적으로는 편의성만 보면 XStream이 쓰기 더 편하게 느껴집니다. 이제 간단한 예제부터 한번 보겠습니다. ..
JAXB를 이용한 XML UnMarshalling(HttpServletResponse getWriter()) 예제 #4
JAXB를 이용한 XML Marshalling, UnMarshalling(InputStream, OutputStream) 예제 #3
JAXB를 이용한 XML UnMarshalling(HttpUrlConnection) 예제 #2 JAXB를 이용한 File로 마샬링, 마샬링된 XML을 언마샬링 하는 방법에 대해 살펴보았습니다. 이번엔 HttpUrlConnection 을 통해 얻어온 InputStream으로 언마샬링 하는 예제를 써보겠습니다. 1부의 File을 통한 Marshalling, UnMarshalling 예제를 보시고 나면 금방 이해 되실 듯 싶습니다. 1부에서는 List형 데이터를 마샬링, 언마샬링 하는 방법을 다뤘고 이번에는 약간 변경하여 XML Element의 Attribute처리를 다뤄봤습니다. -XML 원본 데이터 예시(UnMarshalling시 사용) -------------------------------------------------------------------------------------------..
JAXB를 이용한 XML Marshalling, UnMarshalling(File) 예제 #1 흔히 데이터 처리 방법으로 과거부터 많이 XML을 SAX나 DOM API를 사용 하여 데이터를 가져오는 방식을 많이 사용 해왔습니다. 요즘은 프론트 엔드에서 AJAX를 사용한 화면전환없이 처리하는 방법을 많이 사용하면서 JSON(Java Script Object Notation)을 많이 사용하고 있지만 여전히 XML도 많이 사용되고 있습니다. 보통 스프링 프레임워크를 사용하시는 분들은 XStream을 사용하시는 것 같은데 JAXB에 비해 코드 처리가 간결해 보이긴 했습니다. 아직 XStream을 써보지 않은 관계로 JAXB를 통한 여러가지 XML Marshalling, UnMarshalling 처리에 대해 몇가지 써볼까 합니다. 1. JAXB(Java Architecture for XML Binding)..
[JAVA] 기준년월의 전월 구하는 기능, 현재 년월의 전월, 마지막 날짜 구하는 기능 지금 회사에는 쓰는 ERP시스템을 좀더 편하게 보기위해서 MIS비스무레한 걸 만들다가 하도 오랜만에 날짜관련된걸 만드려니 한참 해매게 된..ㅜ Calendar API는 정말 편리하긴 하지만 사용법을 잘 모르면 API 뒤지느라 좀 짜증나기도 하네요. 역시 반복학습과 경험이 중요한것 같습니다. 사용법 : - 첫번째 예제 : 파라미터로 기준 날짜(ex)201304, 가감할 숫자를 넘깁니다. - 두번째 예제 : 파라미터로 가감할 숫자를 넘깁니다. - 세번째 예제 : 파라미터로 기준 날짜(ex)201304를 넘깁니다. //파라미터의 해당하는 년월의 전달을 구한다. public String getBeforeYearMonthByYM(String yearMonth, int minVal){ SimpleDateFormat..
[JSP_AJAX] jQuery Ajax, Apache Commons Upload를 사용한 다중파일 업로드, 프로그레스 바 제작 지난번에 파일 업로드 프로그레스바 구현에 대한 글을 포스팅 한적이 있었습니다. 당시에는 단일 파일 업로드만 구현 했는데 이번에는 다중 파일 업로드 구현에 대해서 써볼까 합니다. 단일 파일 업로드 기능을 구현할때도 그랬지만 웹에서 파일업로드 기능 구현은 거의 해본적이 없습니다. 보통 OCX를 통한 파일 업로드 방식만 많이 사용해서 봐서 삽질을 많이 했네요. 일단 구현전에 괜찮은 파일 업로드 모듈을 찾아 봤습니다. 아무래도 제가 직접 제작하는것도 좋지만 저보다 뛰어난 분들이 만든 소스가 더 믿음직스러우니까요. 하지만 찾아보시면 보통 JS + Flash나 Flex를 사용한 파일 업로드 모듈을 보시게 될겁니다. 일반 PC환경에서면 크게 거슬리진 않지만 상황이 많이 나아지긴 했어도 모바일 환경하에서는 Flash ..
JSON(JavaScript Object Notation)사용법에 대해 요즘 N,D포털을 비롯해서 거의 모든 사이트에서 Front-end 구현 기술에 빠지지 않고 포함되는 기술로 AJAX가 사용되는 것 같습니다. 사실 AJAX자체는 신기술이라 할 수는 없지만 jQuery같은 훌륭한 자바스크립트 라이브러리가 나오기 전에는 뷰페이지를 표현하는데 있어서 AJAX가 많이 사용됐던것 같진 않습니다. 물론 이전에 prototype.js와 같은 라이브러리가 있긴 했으나 지금처럼 어느곳에서나 눈에 띌정도로 많이 사용됐던 것 같진 않네요. 저 같은 경우에도 AJAX를 깊이있게 사용해본적은 그다지 없고 request중에 비동기적 기능호출이 필요한 경우에만 종종 사용해왔던 것 같습니다. 하지만 대세를 따르다 보니 이젠 AJAX, JSON사용은 필요보다는 필수가 되가고 있네요. JSON이 두루 ..
[JAVA_JSP_AJAX] SpringFramework, JSP, jQuery Ajax, Apache Commons Upload를 사용한 프로그레스바 작성 예제 파일 업로드 라이브러리 선택(COS,Apache Commons Upload)에 대해 포스팅 했던 글에 이어 이번에는 파일 업로드 구현 예제에 대해 올려보겠습니다. 파일 업로드시에 보통 작은 데이터의 경우 손쉽게 jQuery의 ajaxStart, ajaxStop function을 통해 AJAX 요청 시작시, 완료시에 대한 이벤트를 처리 할 수 있으므로 ajaxStart()시에 GIF이미지 등을 화면에 띄워줘서 처리 상태를 사용자에게 알릴 수 있습니다. 보통 큰 용량의 파일이 업로드 될때는 JSP등의 페이지로 처리 하기 보다는 별도의 업로드 모듈을 사용하는것이 낫겠지만 5MB~10MB내의 파일이 오갈때에는 굳이 그럴 필요없이 웹으로만 구현하는것도 충분하다고 생각합니다. PC의 경우 굳이 프로그레스바를 보여주..
[JAVA,JSP] 파일업로드 기능 구현시 cos.jar를 쓸까? Apache Commons Upload를 쓸까? 얼마전 공부겸 해서 Spring Framework 2.5, jQuery, iBatis를 사용한 모바일 전용 게시판을 제작 했습니다. 처음에는 그냥 기본적인 기능만 만들고 다른것 좀 공부 하려고 했는데 만들다 보니 재미가 붙어서 파일 업로드 기능도 추가 하게 됐습니다. 다중 업로드도 구현하려고 했지만 귀찮아서 단일 업로드만 구현하게 됐네요. 여튼.. 파일 업로드를 워낙 오랜만에 구현하려다 보니 기억나는 것도 없고 뭘 사용할까 고민이 됐습니다. 그래서 검색하다보니 가장 많이 사용하는듯 한 라이브러리로 cos.jar가 눈에 띄었습니다. (com.oreilly.servlet의 약자이죠. 오라일리 책 시리즈로 으로 유명한..) 하나는 Apache Commons Upload 였는데 둘다 구현하기가 까다로운 편은 아..
[JAVA] iBatis+Struts2 예제 정말 너무나 오랜만에 글을 써보는것 같습니다.. 거의 반년만인것 같은데.. 몇달간 자바를 배우느라 안돌아가는 머리 부여잡고 고생중입니다. 다들 재미없어하는 프로그래밍 얘기를 여기다 쓸줄이야 ㅋㅋㅋ 그런다고 잘 알면서 쓰는것도 아니고 잘못된 정보가 있을수도 있으니 보시는분들은 나름 필터링 해서 보시면 되겠습니다. 어짜피 파일도 많고 안의 내용을 전부 글로 쓰기는 시간도 없고 귀찮기도 해서 대략적인 파일구조만 설명하고 예제로 만든 파일을 첨부했습니다. 1. iBatis iBatis를 처음접했을때는 파일갯수만 늘어나고 복잡하다고 생각했습니다.. MVC Model 1에서 주구장창 사용해오던 DAO클래스에 너무나 익숙해져서인지 왜 쓰는지도 사실 잘 몰랐고 새로운 시도는 항상 어려움이 있는것 같습니다. 근데 계속써..