[TIL] 240412

Geehyun(장지현)·2024년 4월 14일

TIL

목록 보기
60/70
post-thumbnail

Today

  • Fileter 만들기

    1. 클래스를 생성해 implements Filter 해주기
      * 이때 Filter가 여러개인데, 그 중 javax.servlet.Filter로 임포트 해야함.
    2. Filter 인터페이스는,
      • init
      • destroy
      • doFilter
        위 3개의 메서드를 구현해야함
    3. Filter 클래스 구현하기
    package org.fullstack4.chap1.filter;
    
    import lombok.extern.log4j.Log4j2;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @Log4j2
    @WebFilter(urlPatterns = {"/bbs/*"})
    public class LoginCheckFilter implements Filter {
    	  // 위 urlPatterns에 없어도 일단 필터는 다 들어오나, 해당 url인 경우만 실제 실행 됨.
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            Filter.super.init(filterConfig);
        }
    
        @Override
        public void destroy() {
            Filter.super.destroy();
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
           log.info("Login Check Filter");
            HttpServletRequest req = (HttpServletRequest) servletRequest;
            HttpServletResponse resp = (HttpServletResponse) servletResponse;
    
            HttpSession session = req.getSession();
    
            if(session.getAttribute("user_id") == null) {
                resp.sendRedirect("/member/login");
                return;
            }
            chain.doFilter(req, resp);
        }
    }

    💡 Filter 에 병목현상이 발생할 경우
    톰캣 서버 실행로그를 확인해서, 실행 시간이 딜레이가 점점 쌓이게되는 경우가 발생할 수 있습니다. 이 때는 Filter 로직을 확인해야함.

  • Listener 만들기

    1. 클래스를 생성해 implements ServletContextListener 해주기
      * javax.servlet.ServletContextListener로 임포트 해야함.
    2. ServletContextListener 인터페이스는,
      • contextInitialized
      • contextDestroyed
        를 구현해야함
  1. ServletContextListener 클래스 구현하기

    package org.fullstack4.chap1.listener;
    
    import lombok.extern.log4j.Log4j2;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    
    @Log4j2
    @WebListener
    public class F4AppListener implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            log.info("===========int===========");
    
            ServletContext servletContext = sce.getServletContext();
            servletContext.setAttribute("appName", "Fullstack4");
        }
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            log.info("===========destroyed===========");
        }
    }

Review

  • 여태 공부하면서 작성한 파일들을 전부 깃허브에 올렸다.
  • 슬슬 포트폴리오 및 이력서 준비를...해야하지 않을까라는 마음만 먹는중! 깃허브 블로그 등 여태까지 해오던 것들을 정리한다는 느낌으로 이번주를 보내고 다음주부터 슬슬 정리를 해야할 듯 함
  • 정처기 실기...20일인줄 알았는데 27일이었다! 공부할 시간이 더 늘었다!
profile
블로그 이전 했습니다. 아래 블로그 아이콘(🏠) 눌러서 놀러오세요

0개의 댓글