티스토리 뷰
- Controller가 실행 되기 전, 실행 될때, 실행 후에 실행되도록 하는 클래스
컨트롤러가 실행되는 시간 측정
< TimeCheckInterceptor.java >
package kr.encore.bigdataShop.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
// 컨트롤러가 실행되는 시간을 측정(접속자 ip)
public class TimeCheckInterceptor extends HandlerInterceptorAdapter{
private long start;
private long end;
// 컨트롤러 시작전
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("===========preHandle===========");
System.out.println("접속한 ip" + request.getRemoteHost());
start = System.nanoTime(); // 실행 전 시간 측정
return true; // 다음 Interceptor나 Controller를 실행하겠다는 의미
}
// 컨트롤러 실행 후(뷰가 만들어지기 전)
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
end = System.nanoTime(); // 실행 후 시간 측정
System.out.println("===========postHandle===========");
String handlerClass = handler.getClass().getName();
System.out.println(handlerClass + ":실행시간=>"+(end-start));
}
}
-
spring설정 파일에 인터셉터 등록
<!-- 인터셉터 등록 -->
<interceptors>
<interceptor>
<!-- 요청 path를 정의 path 속성에 정의하는 url로 요청을 하면 인터셉터 실행 -->
<mapping path="/**"/>
<beans:bean class="kr.encore.bigdataShop.interceptor.TimeCheckInterceptor"/>
</interceptor>
</interceptors>
-
결과
로그인 체크
< LoginCheckInterceptor.java >
package kr.encore.bigdataShop.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import kr.encore.bigdataShop.member.MemberDTO;
public class LoginCheckInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
//로그인 유무 체크
HttpSession session = request.getSession(false);
if(session!=null) {
MemberDTO user = (MemberDTO) session.getAttribute("loginUser");
if(user==null) {
response.sendRedirect("/bigdataShop/member/login.do");
return false;
}
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
}
-
spring 설정 파일에 등록
-
등록한 순서대로 실행된다.
<!-- 인터셉터 등록 -->
<interceptors>
<interceptor>
<!-- 요청 path를 정의 path 속성에 정의하는 url로 요청을 하면 인터셉터 실행 -->
<mapping path="/**"/>
<beans:bean class="kr.encore.bigdataShop.interceptor.TimeCheckInterceptor"/>
</interceptor>
<interceptor>
<mapping path="/board/**"/>
<mapping path="/member/**"/>
<exclude-mapping path="/member/login.do"/>
<beans:bean class="kr.encore.bigdataShop.interceptor.LoginCheckInterceptor"/>
</interceptor>
</interceptors>
-
결과 (게시판을 눌렀을 때 세션에 아이디가 없으면 로그인 페이지로 이동)
'Spring' 카테고리의 다른 글
Logback을 이용하여 로그 기록하기 (0) | 2020.10.20 |
---|---|
Gradle-Spring Project #4 - 회원 서비스 (0) | 2020.10.10 |
Gradle-Spring Project #3 - 도메인, 리포지토리, 테스트 케이스 (0) | 2020.10.06 |
Gradle-Spring Project #2 - 정적 컨텐츠, MVC-템플릿, API (0) | 2020.10.04 |
Gradle-Spring Project #1 - 프로젝트 환경설정 (0) | 2020.10.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- linux
- I/O Mechanisms
- SQL
- Free space management
- Allocation methods
- Flume
- 빅데이터 플랫폼
- gradle
- 하둡
- vmware
- Disk Scheduling
- SPARK
- aop
- Spring
- 빅데이터
- oracle
- I/O Services of OS
- RAID Architecture
- HDFS
- mapreduce
- File Protection
- Disk System
- jdbc
- hadoop
- JSON
- maven
- springboot
- Replacement Strategies
- Variable allocation
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함