[JavaWeb]의 필터 필터 필터
서브렛 필터는 서브렛 컨테이너의 요청 및 응답 객체를 확인하고 수정할 수 있는 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");
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.