쓸만한 JSP 홈페이지 만들기

공통클래스 - CommonInterceptor

엉으니 2019. 7. 3. 20:12

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

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

 

1. 메소드 구현 전에 필요한 리소스를 로드한다.

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

	@Autowired
	private CacheRoleManager cacheRoleManager;
	
	/** Common Service */
	@Autowired
	protected @Qualifier("commonService") CommonService commonService;

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

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

- CommonService 객체는 DB처리를 위해 선언한다. Qualifier는 CommonServiceImpl임을 의미한다.CommonServiceImpl상단에 Qualifier를 "commonService"로 선언할것이다.

참고 :  https://m.blog.naver.com/sksk3479/221178451242

 

2. preHandle

		String currentUrl = request.getRequestURL().toString();
		String currentUrlPattern = currentUrl.replace("http://", ""); 
		currentUrlPattern = currentUrlPattern.replace("https://", "");
		currentUrlPattern = currentUrlPattern.substring(currentUrlPattern.indexOf("/"), currentUrlPattern.lastIndexOf("/"));

		if(currentUrl.indexOf("/front/") < 0 && currentUrl.indexOf("/test/") < 0 ){
			String adminId = null;
			try {
	
				if (currentUrl.indexOf("/resources/") < 0) {
					UserVO userVO = (UserVO) UserInfoUtil.getUserInfo();
					request.setAttribute("adminInfo", userVO);
					adminId = userVO.getUserId();
				}
			} catch (Exception e) {
				logger.info("Auth Error");
			}
					
			
			cacheRoleManager.initRole(adminId);
			LinkedHashMap<String, SecurityRoleVO> cacheRole = cacheRoleManager.getRole();
		
			}

- 함수선언 및 시작, 끝 표시 로그는 제외한 내용이다.

- currentUrl로 인증을 제외할 url을 비교하기 위한 변수를 만들었다.

- http://, https://제외, 맨앞과 맨뒤"/" 제거했다.

- /front/와 /test/ url일때는 인증을 제외한다. (로그인을 하지 않아도 접속할수 있게 만들것이다.)

- /resources/ url일때는 UserVO에 인증정보를 adminInfo에 정보를 넣는다.

- 캐시로 adminId를 등록했다.

- cacheRole에 가져온 Role를 HashMap으로 등록한다.

 

3. postHandle

	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		if (logger.isDebugEnabled()) {
			logger.debug("COMMON 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("COMMON INTERCEPTOR POST END");
		}
	}

- FrontInterceptor와 마찬가지로 URL을 표시하도록 한다.

- 파라미터도 로그에 표시하도록 한다.

 

CommonInterceptor 끝.

반응형