2020.12.03 고급자바 filter 수업 접근자 제한 Filter

 package kr.or.ddit.filter;


import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

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;


public class IPCheckFilter implements Filter {

private Map<String, String> ipMap; //ip 정보가 저장될  Map 객체 변수 선언 
    

public void init(FilterConfig fConfig) throws ServletException {
ipMap = new HashMap<>(); 
// 허용되는 IP와 불허되는 의 IP 정보를 구성한다. 
// 값이 OK는 허용, NO 는 불허

ipMap.put("192.168.42.48", "OK"); //내 아이피 주소 
ipMap.put("127.0.0.1", "OK"); // 로컬 호스트
ipMap.put("0:0:0:0:0:0:0:1", "OK"); 
ipMap.put("192.168.42.38", "NO");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String ip = request.getRemoteAddr(); //접속한 ip 주소 구하기 
System.out.println("접속 IP : " + ip);
if(ip != null && ipMap.containsKey(ip)) {
System.out.println("값 ==> " + ipMap.get(ip));
if("OK".equals(ipMap.get(ip))) {
chain.doFilter(request, response);
}else {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter(); 
out.println("<h2>접근이 거부된 IP 입니다. </h2>");
out.println("<h2>관리자에게 문의하세요</h2>"); 
}else { //목록에 없는 경우
//목록에 없으면 무조건 특정한 페이지로 이동시킨다. 
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse )response;
res.sendRedirect(req.getContextPath() + "/servletTest.do");
}

}


    public void destroy() {
    }

}





댓글