본문 바로가기
Java | spring/JSP | MVC 패턴

JSP filter 흐름제어( + 로그인 유지 ex )

by 워니 wony 2019. 5. 18.

filter

  • 흐름을 제어하기 위한
  • 클라이언트와 서버 사이에 필터가 존재해서 들어오는 request response 필터가 먼저 받아 사전 작업/사후 작업 공통적으로 수행되는 부분 작업할 있는 기능
  • 사용자의 특정 요청 가로채어 먼저 어떤 기능을 수행시키기 위한 기술

 

 

필터 파일 사용

  • 필터를 사용할 특정 페이지에서만 필터를 적용해야 동작이 제대로 된다. 그렇기 때문에 분류가 필요한데, 폴더를 분류해서 지정 가능

@WebFilter("*.jsp")

  • 이렇게 쓰면 모든 jsp파일에 적용하겠다는

 

@WebFilter("/member/*")

  • 이렇게 쓰면, member 폴더에 있는 모든 jsp 필터를 적용하겠다고 하는것

 

@WebFilter(urlPatterns= {"/member2/*","/member/*"})

  • 여러가지 폴더를 설정해야 하는 경우 위처럼 쓰면 된다.

 

chain.doFilter(request, response);

  • 원래 사용자가 요청한 서비스로 가라는 명령어

 

HttpSession session = ((HttpServletRequest)request).getSession();         

  • 필터 파일에서 request 객체를 통해 session 얻어오는 방법

 

((HttpServletResponse)response).sendRedirect("login.jsp");

  • 필터 파일 에서 response 이동 시키는 방법

 

필터 로그인 유지

  • 각 페이지 마다 섹션의 기능 문서를 포함해도 되지만 filter를 쓰면 한번에 처리 가능
  •  필터 페이지 / 필터를 폴더별로 설정할 있다.
  • 만약 폴더에 jsp 파일을 넣게 되면, 실행되는 페이지의 경로에 폴더를 넣어서 모두 변경해 줘야한다.
package com.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet Filter implementation class LoginFilter
 */
//@WebFilter("/member/*")
@WebFilter(urlPatterns= {"/member2/*","/member/*"})
public class LoginFilter implements Filter {

    /**
     * Default constructor. 
     */
    public LoginFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		
		System.out.println("ok");
		
		HttpSession session = ((HttpServletRequest)request).getSession();
		if(session.getAttribute("member")==null)
		{
			((HttpServletResponse)response).sendRedirect("/day0110_a/loginPage/login.jsp");
		}
		else
		{
			chain.doFilter(request, response);
		}
		
		// pass the request along the filter chain
		
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

 

 

 

 

반응형

댓글