자바 웹 개발시 공통으로 처리해야 되는 업무를 모든 페이지에 작성 한다면 중복된 코드가 많아지고 소스 관리도 어렵다.
(공통으로 처리해야 하는 업무 : 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등)
공통 부분은 빼서 따로 관리하는게 좋다.
공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 3가지가 있다.
1. Filter
2. Interceptor
3. AOP
- Interceptor와 Filter는 Servlet 단위에서 실행된다. <> 반면 AOP는 메소드 앞에 Proxy패턴의 형태로 실행
1. 서버를 실행시켜 서블릿이 올라오는 동안에 init이 실행되고, 그 후 doFilter가 실행된다.
2. 컨트롤러에 들어가기 전 preHandler가 실행된다
3. 컨트롤러에서 나와 postHandler, after Completion, doFilter 순으로 진행이 된다.
4. 서블릿 종료 시 destroy가 실행된다.
*Filter
-전체적인 Request단에서 어떤 처리가 필요할때
-인증,이미지변환,데이터압축,암호화필터,토크나이징 필터,XML 컨텐츠를 변형하는 XSLT 필터,
URL 및 기타정보를 캐시하는 필터
-문자 인코딩등
*Interceptor
-세션 및 쿠키 체크하는 http 프로토콜 단위로 처리해야 하는 업무가 있을 때
-로그인 세션 체크 등
*AOP
-비즈니스 단에서 세밀하게 조정하고 싶을때
-로깅,트랜잭션,에러처리 등
참고
댓글