BBS > svn

ViewInterceptor

작성자 : 이창우 (x1wins) | 등록일 : 2011-05-11 | 목록
첨부 파일이 없습니다.
첨부 이미지가 없습니다.
package net.changwoo.bbs.interceptor;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.changwoo.bbs.service.BbsService;
import net.changwoo.util.CookieUtil;
import net.changwoo.util.Property;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class ViewInterceptor extends HandlerInterceptorAdapter {

	static Logger logger = Logger.getLogger(ViewInterceptor.class);
	static {
		BasicConfigurator.configure();
	}

//	@Override
//	public boolean preHandle(HttpServletRequest request,
//			HttpServletResponse response, Object handler) throws Exception {
//		logger.info("Before handling the request");
//		System.out.println("preHandle");
//		
//		return super.preHandle(request, response, handler);
//	}
	
//	preHandle - Controller 실행 요청전
//	postHandle - view(jsp)로 forward되기 전에
//	afterCompletion - 끝난뒤
//	[출처] Spring - Interceptor 를 사용한 login 처리|작성자 gigar
	
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		// TODO Auto-generated method stub

		logger.info(handler);
		logger.info(handler.getClass());
		
		return super.preHandle(request, response, handler);
		
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		logger.info("After handling the request");
//		System.out.println("postHandle");
		//
		
		//http통신시의 header 정보를 가져와서 어떤 웹브라우저인지 확인한다.
		String userAgent = request.getHeader("user-agent").toLowerCase();
		logger.info("userAgent = "+userAgent);
		
		
		//cookie에서 webType값을 가져옴
		String webType = CookieUtil.getCookieValue(request, response, Property.WEBTYPE);
		logger.info("cookie webType =================="+webType);
		
		String viewName = modelAndView.getViewName();
		
		if(webType.equals("mobile") || userAgent.indexOf("android")>=0 || userAgent.indexOf("iphone")>=0){//header의 문자열에 android , iphone이 포함되었을때
			
			logger.info("modelAndView.getViewName111111( =================="+modelAndView.getViewName().indexOf("redirect:"));
			logger.info("modelAndView.getViewName( =================="+modelAndView.getViewName());
			if(!webType.equals("desktop") && modelAndView.getViewName().indexOf("redirect:")==-1){
				viewName = modelAndView.getViewName()+"_mobile";
				modelAndView.setViewName(viewName);
			}
		}
		logger.info("modelAndView.getViewName( =================="+modelAndView.getViewName());
		logger.info("viewName ================ "+viewName);
		super.postHandle(request, response, handler, modelAndView);
	}

	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		logger.info("After rendering the view");
		logger.info("afterCompletion");
		super.afterCompletion(request, response, handler, ex);
	}

}
이것으로 유선 무선 웹을 동시에 개발한다.

즉 뷰페이지만 모바일페이지 데스크탑페이지 분기처리함으로써

추가 개발에 대한 비용과 시간을 줄일수 있다.
로그인 하셔야 댓글을 사용하실수 있습니다.
댓글쓰기를 누르면 로그인 페이지로 이동 후 돌아옵니다.
총 댓글 겟수 0
번호 제목 등록일 작성자 조회수
625 .svn 폴더 제거 하기 (0) 2013-06-12 이창우 1110
619 svn port 변경 (0) 2013-04-07 이창우 2083
613 svn diff log 사용법 (0) 2013-01-04 이창우 2279
514 svn 주소바꾸기 , 삭제 (0) 2012-04-09 이창우 2668
479 android 소스 모음 (0) 2012-02-21 이창우 1573
358 웹 유틸 (0) 2011-10-27 이창우 1431
307 nullcheck (0) 2011-09-13 이창우 1473
299 GIT 간단 사용법 (0) 2011-09-04 이창우 3081
180 Mongo DB (0) 2011-06-17 이창우 1649
178 iphone svg (0) 2011-06-15 이창우 1592
177 flex 유용한 사이트 (0) 2011-06-15 이창우 1655
171 svn 정보 (0) 2011-06-07 이창우 1549
168 repos 만들기 (0) 2011-06-07 이창우 1688
167 이클립스에 svn 플러그인 설치 (0) 2011-06-07 이창우 2298
146 facebook (0) 2011-05-30 이창우 1631
145 xml json parsing (0) 2011-05-30 이창우 1664
144 twitter timeline sample (0) 2011-05-30 이창우 1848
143 twiter timeline (0) 2011-05-30 이창우 1519
118 design template (1) 2011-05-23 이창우 1728
-> ViewInterceptor (0) 2011-05-11 이창우 2429
< 1 2 >
글쓰기 검색