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
}
}
반응형
'Java | spring > JSP | MVC 패턴' 카테고리의 다른 글
JSP, MVC 패턴이 무엇인가? (0) | 2019.05.18 |
---|---|
JSP 서블릿 한글 세팅(한글 깨짐 해결 하기) (1) | 2019.05.18 |
JSP session, 사용자 상태유지( 로그인 유지 ) (0) | 2019.05.18 |
JSP 문장 구성요소( 지시자, 스크립트릿, 표현식 등) (0) | 2019.05.18 |
JSP에서 중요한 get / post 방식 요청 (0) | 2019.05.18 |
댓글