세션 유무를 확인하는 필터이다.
web.xml 에 필터 설정하면 되고 avoidUrls 는 , (comma) 를 구분자로 복수개 기술하면 된다.
package filter; import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; 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.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class SessionFilter implements Filter { private ArrayList urlList; public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; String url = request.getServletPath(); if ( urlList.contains(url) ) { chain.doFilter(req, res); } else { HttpSession session = request.getSession(false); if ( session == null || session.getAttribute("userId") == null ) { //System.out.println("## Filter Session Null - " + url); response.sendRedirect("/index.jsp"); } else { chain.doFilter(req, res); } } } public void init(FilterConfig config) throws ServletException { String urls = config.getInitParameter("avoidUrls"); StringTokenizer token = new StringTokenizer(urls, ","); urlList = new ArrayList(); while ( token.hasMoreTokens() ) { urlList.add(token.nextToken()); } } }