Java

SessionFilter - 세션 유무 확인하는 필터

sstdio.h·2015년 4월 20일·조회 13,107

세션 유무를 확인하는 필터이다.

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());
		}
	}
}

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.