[JavaWeb]의 필터 필터 필터

3214 단어 JavaJavaWeb
필터의 작용이 매우 커서 오랫동안 사용하지 않아도 잊어버릴 수 있다.이번에는 특별히 기억을 되찾고 간단한 학습 노트를 만들었다.
서브렛 필터는 서브렛 컨테이너의 요청 및 응답 객체를 확인하고 수정할 수 있는 Java 서브렛 사양 2.3에 정의되어 있습니다.서브렛 필터 자체는 요청 및 응답 객체를 생성하지 않으며 필터만 사용할 수 있습니다.서브렛이 만료되면 서브렛이 호출되기 전에 Request 객체를 확인하고 Request Header와 Request 내용을 수정할 수 있습니다.서브렛이 호출된 후 Response 객체를 확인하고 Response Header 및 Response 컨텐트를 수정합니다.서브렛 만료 필터링을 담당하는 웹 구성 요소는 서브렛, JSP 또는 HTML 파일일 수 있습니다.
브라우저 요청-필터-서브렛 등 목표 자원-필터-브라우저
개발 단계는 다음과 같습니다.
1 자체 Filter 클래스 생성 및 Filter 인터페이스 구현
2 인터페이스를 다시 쓰는 방법 init (),doFilter (),destroy () 방법
특정 Ip 주소에 대한 액세스를 허용하는 예제 코드
public class FilterDemo implements Filter {

	private FilterConfig config;
	private String allowIps;

	/**
	 *      servlet      ,Web         ,        
	 *                doFilter(),       FilterConfig  ,  servlet         。
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		this.config = filterConfig;//  Web           
		allowIps = config.getInitParameter("allowIps");
	}

	/**
	 *    FilterChain,                    
	 */
	public void doFilter(ServletRequest request, ServletResponse response,
	                     FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");

		HttpServletRequest servletRequest = (HttpServletRequest) request;
		HttpServletResponse servletResponse = (HttpServletResponse) response;

		String remotelP = request.getRemoteAddr();//       lP

		int i = remotelP.lastIndexOf(".");
		if (allowIps.indexOf(remotelP.substring(0, i)) < 0) {
			servletResponse.sendRedirect(servletRequest.getContextPath()
			+ "/common/Error.jsp");

		} else {
			chain.doFilter(request, response);//        ,  
		}

	}

	public void destroy() {	}
}

3 웹에서.xml에서 Filter 클래스 구성
	
		filterDemo
		com.scq.javaee.FilterDemo

		
			allowIps
			203.205.167.*
		
	
	
		filterDemo
		/index.jsp
	

추가 설명:
1 여러 Filter 클래스의 우선 순위
하나의 웹 응용 프로그램에서 여러 개의 Filter를 개발할 수 있는데, 이러한 Filter를 조합해서 하나의 Filter 체인이라고 부른다.웹 서버는 Filter에 따라 웹에 있습니다.xml 파일의 등록 순서입니다. 어떤 Filter를 먼저 호출할지 결정합니다.첫 번째 Filter의doFilter 방법이 호출되면 웹 서버는 Filter 체인을 대표하는 FilterChain 대상을 만들어서 이 방법에 전달합니다.doFilter 방법에서 개발자가 FilterChain 대상의doFilter 방법을 호출하면 웹 서버는 FilterChain 대상에 Filter가 있는지 확인하고 있으면 두 번째 Filter를 호출하고 없으면 목표 자원을 호출합니다
2 HttpServletRequest 및 ServletRequest 등의 차이점
HttpServletRequest와 ServletRequest는 모두 인터페이스입니다.HttpServletRequest는 서브렛Request에서 상속됩니다.HttpServletRequest는 ServletRequest보다 Http 프로토콜에 대한 방법이 더 많습니다
3 forward() 및 sendRedirect()
forward(): 매개 변수를 전달할 수 있으며 주소 표시줄은 변하지 않으며 서버 범위 내에서만 가능합니다.redirect (): 방향을 바꾸고 주소 표시줄이 바뀌며 파라미터가 비워졌지만, 주소request로 이동할 수 있습니다.getRequestDispatcher("/common/Error.jsp").forward(request, response); response.sendRedirect(request.getContextPath() + "/common/Error.jsp");

좋은 웹페이지 즐겨찾기