쓸만한 JSP 홈페이지 만들기

공통클래스 - FrontInterceptor

엉으니 2019. 7. 2. 22:43

인터셉터를 구현하는 방법은 두가지가 있다.

HandlerInterceptorAdapter 인터페이스를 구현하는 방법(implements),

클래스를 상속받아 구현하는 방법(extends)이 그것이다.

 

나는 클래스를 상속받아 구현하는 방법으로 인터셉터를 만들었다.

preHandle, postHandle두개 메소드만 구현했다.

 

그전에 필요할지, 필요없을지 모르는 리소스를 먼저 선언한다.

1. 리소스 선언

	private final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	private CacheRoleManager cacheRoleManager;
	
	Model model;
	
	DBConnect DBCon = new DBConnect();
	
	/** Common Service */
	@Autowired CommonService commonService;

- Logger는 로그 정보에 남겨야 하기때문에 이 클래스 자체를 파라미터로 넘겨줬다.

- CacheRoleManager는 혹시모를 캐시처리를 하기위해 선언한다.

- model에 담을 정보가 생기면 이 객체에 담을것이다.

- DBCon은 DB커넥션을 위해 선언한다.

- CommonService는 DB처리를 위해 선언한다.

- 여기 있는 리소스는 사용하지 않을 가능성이 크다. / 추후 사용가능성이 없어지면 삭제할것이다.

 

2. preHandle

	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {

		if (logger.isDebugEnabled()) {
			logger.debug("FRONT INTERCEPTOR PRE START");
		}

		if (logger.isDebugEnabled()) {
			logger.debug("FRONT INTERCEPTOR PRE END");
		}
	
		return true;
	}

이 함수에서는 딱히 처리하는것 없이 함수 시작과 끝만 debug모드일때 출력하도록 했다.

 

3. postHandle

	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {

		if (logger.isDebugEnabled()) {
			logger.debug("FRONT INTERCEPTOR POST START");
		}

		// 1. Parameter Log
		if (logger.isDebugEnabled()) {
			logger.debug("=================================");
			logger.debug("Base Info =======================");
			logger.debug("URL : " + request.getRequestURL());
			logger.debug("=================================");
			logger.debug("Parameters ======================");

			@SuppressWarnings("rawtypes")
			Enumeration em = request.getParameterNames();
			while (em.hasMoreElements()) {
				String name = (String) em.nextElement();
				String values[] = request.getParameterValues(name);

				if (values != null) {
					for (int i = 0; i < values.length; i++) {
						logger.debug(name + ": " + values[i]);
					}
				}
			}
		}

		if (logger.isDebugEnabled()) {
			logger.debug("FRONT INTERCEPTOR POST END");
		}
	}

함수 시작과 끝을 debug모드일때 출력하도록 했다.

그 중간에는 호출URL을 debug모드일때 출력하도록 하고, 전달되는 파라미터를 출력하도록 한다.

 

FrontInterceptor 끝

반응형