반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인프런인강
- 인프런
- 자바스크립트함수
- 객체의비교
- 자바스크립트객체리터럴
- NPM
- 자바스크립트파라미터
- 제로초
- 고차함수
- HTTP
- 자바스크립트틱택토
- 콜백함수
- 인터넷프로토콜
- .NET
- 자바스크립트recude
- 비주얼스튜디오
- 자바스크립트
- sort
- 인프런무료강좌
- 이벤트리스너
- EntityFramework
- 객체리터럴
- 인프런자바스크립트
- 인프런강의
- Blazor
- 코딩
- 인프런강좌
- slice
- 틱택토구현
- c#
Archives
- Today
- Total
샐님은 개발중
서블릿 필터 본문
728x90
반응형
1. 서블릿 필터란
- 컨트롤러 등에서 로그인 여부를 하나하나 로직 구현하지 않기 위해 사용
- 이렇게 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사 라고 하며 웹과 관련된 공통 관심사는 서블릿필터 또는 스프링 인터셉터를 사용하는 것이 좋음.
2. 서블릿 필터의 흐름
HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러
3. 필터 체인 - 필터를 여러개 설정할수 있다.
HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러
4.필터 인터페이스 - 필터 인터페이스를 구현,등록하면 서블릿 컨테이너가 필터를 싱글톤 객체로 생성,관리함.
package hello.login.web.filter;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.UUID;
/**
* http 요청이 올때마다 실행됨
*/
@Slf4j
public class LogFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info("log filter init");
}
@Override
public void destroy() {
log.info("log filter destroy");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
log.info("log filter doFilter");
HttpServletRequest httpRequest = (HttpServletRequest) request; // ServletRequest 는 HttpServletRequest 의 부모 인터페이스이다.필요한건 HttpServletRequest 이기때문에 다운 캐스팅해서 사용.
String requestURI = httpRequest.getRequestURI();
String uuid = UUID.randomUUID().toString();
try {
log.info("REQUEST [{}][{}]", uuid,requestURI);
chain.doFilter(request,response);
// 다음 필터가 있으면 필터호출, 없으면 서블릿 호출. 이로직없으면 필터 호출 하지않음.
}catch(Exception e){
throw e;
}finally {
log.info("RESPONSE [{}],[{}]",uuid, requestURI );
}
}
}
5. WebConfig - 필터 등록
package hello.login.web;
import hello.login.web.filter.LogFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean logFilter(){
FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
filterRegistrationBean.setFilter(new LogFilter());
filterRegistrationBean.setOrder(1);
filterRegistrationBean.addUrlPatterns("/*"); // 필터를 적용할 url 패턴지정. 여러개 가능
return filterRegistrationBean;
}
}
728x90
반응형
'스프링 MVC 2편 - 인프런 김영한 > 섹션 6,7 - 로그인 처리' 카테고리의 다른 글
스프링 인터셉터 (0) | 2023.07.15 |
---|---|
서블릿 필터 - 인증 체크 (0) | 2023.07.15 |
3. 로그인 - 서블릿 HTTP 세션 1 (0) | 2023.07.15 |
2. 로그인 - 세션 직접 구현 (0) | 2023.07.15 |
1. 로그인 - 세션 방식 (0) | 2023.07.15 |