Spring

    AJAX Login with Spring Security

    AJAX Login with Spring Security

    Introduction 스프링 시큐리티를 이용하여 로그인을 처리할 때에 AJAX 방식으로 로그인 하는 방법이다. 크게 2가지로 볼 수 있겠다. ㅎㅎ Using Handler 기본적인 10단계의 필터 체인 중에 UsernamePasswordAuthencationFilter 단계의 "authentication-success-handler-ref"와 "authentication-success-handler-ref" 를 이용하는 방법이다. 클래스 구조를 보면 아래와 같다. 아래와 같은 필터 체인의 순서롤 작동하게 된다. 구현 방법은 각각의 핸들러에서 응답을 JSON이나 원하는 포멧으로 만들어서 출력하면 된다. public class LoginSuccessHandler implements Authenticatio..

    JSTL Custom Tag using Spring Beans

    Introduction JSTL 태그를 만들어 사용할 때에 스프링 빈을 가져다 쓰는 방법이다. Using Spring Beans 너무나도 간단하다. 일반적으로 TagSupport 클래스를 상속 받아서 구현 하면 되는데, 스프링 빈을 사용하고 싶으면 RequestContextAwareTag 클래스를 상속 받아서 구현하면 된다. 사용법은 아래와 같다. import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.tags.RequestContextAwareTag; public class XXXTag extends RequestContextAwareTag { @Override protected..

    Spring Security Session Destroy

    Spring Security Session Destroy

    Intoduction Spring Security 사용 중에 "사용자의 로그인 시간과 로그아웃 시간을 기록해야 한다" 라는 임무가 떨어졌다 -_- 문제는 이 로그아웃 이라는게 약간 골치 아프다.. 사용자가 직접 로그아웃 버튼을 클릭해서 로그아웃을 한다면 나이스 하지만... 대부분은 용무가 끝나면 그냥 브라우저를 끄거다 바로 다른 사이트로 넘어가게 된다. 이 경우에는 어떻게 하지? 개발자의 눈으로 보면 로그아웃 == 세션 만료로 볼 수 있다. 다른 사이트로 가거나 브라우저를 꺼버리게 되면 WAS의 기준으로 일정 시간이 지나면 세션이 만료되게 된다. 이 세션 만료를 캐취해서 처리를 하는 방법을 알아보자. Using HttpSessionListener 서블릿의 세션 리스너를 이용한 방법이다. 아래와 같이 Ht..

    OSGi + Tomcat 6 + SpringDM 플랫폼 환경 구성

    OSGi + Tomcat 6 + SpringDM 플랫폼 환경 구성

    이제서야 OSGi 에 관심이 생겨서 뭔가를 만들어보기 위해서 OSGi + Tomcat 6 + SpringDM 개발 환경을 구성해 봅니다. Eclipse Indigo + Maven Integration for Eclipse Create Project File - New - Other... → Maven - Maven Project [maven-archetype-quickstart] 선택합니다. [Group Id], [Artifact Id] 아무거나 입력 합니다. -_-;; [Package] 는 필요가 없습니다. Create Target Definition File - New - Other... → Plug-in Development - Target Definition [Parent Folder]는 전에 만..

    Spring Message Source from Database

    Spring Message Source from Database

    스프링을 이용한 다국어 처리를 데이터베이스를 이용해 어떻게 할까 이것저것 고민하다가 구현해 봤습니다. 개발 환경 - Eclipse Indigo + Maven Integration (Sonatype, Inc.) - WebLogic 12c (Tomcat 7) 테이블은 아래와 같이 구성하였습니다. 특별한 것은 없고 여느 책에서나 나오는 스프링에서 MessageSource를 사용하여 다국어 메세지를 가져오는데 AbstractMessageSource 클래스를 상속 받아 따로 클래스를 만들어 봤습니다. (com.tistory.antop.framework.support.DatabaseMessageResource) 구동해 볼 수 있는 샘플을 만들어 봤습니다. 실제 메세지 리소스 부분만 구현하는 시간은 금방인데 하나의 ..

    Infinite Routing DataSource

    Infinite Routing DataSource

    스프링을 이용하여 몇개의 데이터소스를 정해놓고 라우팅을 하는 경우 AbstractRoutingDataSource를 이용할 수 있었습니다. 하지만 경우에 따라 접속해야하는 데이터베이스가 무한대일 경우? 그래서 이것저것 생각해 봤는데 -_-.... 로그인시에 [고객 코드], [아이디], [비밀번호] 3가지를 입력 받습니다. [고객코드]로 고객을 찾은 후 고객의 정보로 디비 정보를 만든 후 ThreadLocal에 저장합니다. 그 후 로그인 처리를 합니다. 로그인 시에 데이터소스를 사용할 때 ThreadLocal에 있는 디비 정보(DbInfo 객체)로 데이터소스를 만들거나 캐쉬에서 가져오게 합니다. 로그인 때에 처음 그 데이터베이스에 접속을 하게 되니까 RoutingDataSource 부분에서 데이터소스를 처음..

    Proftpd Manager

    Proftpd Manager

    드디어 오랜기간의 방황을 깨고 마무리가 되었습니다. ㅠ_ㅠ 빠진 기능도 있고 버그도 있겠지만(?) 다음 과제(?)를 위해서 마무리~ 소개... Ubuntu 에 Proftpd 와 Mysql 을 이용해서 사용자 관리와 파일 전송 기록을 남길 수가 있습니다. http://www.sysadminworld.com/2011/install-proftpd-with-mysql-backend-on-debian-ubuntu/ 위와 같은 테이블로 관리를 하게 됩니다. 유저와 그룹을 관리하고 쌓이기만 하는 전송 기록을 볼 수 있는 웹어플을 한번 만들어 봤습니다. ※ 원래 데이터베이스는 MySQL 인데 샘플을 위해서 SQLite 로 데이터를 옮겼습니다. 사용한 기능... Spring Framework 3 - Core, AOP, ..

    Mybatis Type Handler

    Mybatis Type Handler

    마이바티스를 이용하여 자바 객체와 데이터베이스 테이블을 매핑할 때 서로 완전히 다른 타입의 것들을 사용할 때가 있습니다. 그 예로 대표적인 예가 자바의 Boolean 과 데이터베이스의 플래그 문자입니다. 오라클 같은경우 boolean 타입이 없기 때문에 보통 CHAR(1) 잡고 Y/N 값을 많이 사용합니다. 다른 경우는 1 or 0 을 사용하여 참/거짓, 사용/미사용, 차단/허용 같은 on/off 플래그 값을 사용합니다. 값 자바 데이터베이스 boolean CHAR(1) INTEGER 참 / 사용 true Y 1 거짓 / 미사용 false N 0 org.apache.ibatis.type.TypeHandler 인터페이스를 이용해서 서로 다른 타입을 연결할 수 있습니다. package com.tistory...