JSP/이론
filter
SEOKIHOUSE
2023. 7. 3. 11:49
- https://scshim.tistory.com/398 <<필터 참고
- 필터: 클라이언트가 서블릿에 대해 실행을 요청했을 때 서블릿이 수행되기 전 시점 or 서블릿이 수행되고 난 시점에 실행되는 객체
- 서블릿이 호출되기 전 서블렛 요청을 가로채는 기능
- 서블릿이 호출되기 전 요청내용을 점검
- 요청 헤더의 수정과 조정기능
- 서블릿이 호출된 후 서블릿 응답을 가로채는 기능
- 응답헤더의 수정과 조정기능
1) * 모든 요청에 적용된다
chain.doFilter(request, response); 현재 필터가 다음 필터로 제어를 넘기고자 할 때 호출됩니다. 이 메서드를 호출하면 다음 필터가 실행되며, 만약 다음 필터가 없다면 서블릿으로 제어가 이동하여 해당 서블릿의 service() 메서드가 호출됩니다.
- jsp -> * filter ->encodingfilter - >servlet
0703practice_filter.zip
2.61MB
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Filter Test Form</h1>
<hr>
<form action="testServlet2" method="POST">
<input type="text" name="username">
<input type="submit" value="전송">
</form>
</body>
</html>
package filters;
import java.io.IOException;
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.HttpFilter;
@WebFilter("/*")
public class FlowFilterOne extends HttpFilter implements Filter {
public FlowFilterOne() {
super();
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("init() 호출...one");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("doFilter()호출 전 one");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);
System.out.println("doFilter()호출 후 one");
}
public void destroy() {
System.out.println("destroy()호출..one");
}
}
package filters;
import java.io.IOException;
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.HttpFilter;
@WebFilter("/second")
public class FlowFilterTwo extends HttpFilter implements Filter {
public FlowFilterTwo() {
super();
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("init() 호출...two");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("doFilter()호출 전 two");
chain.doFilter(request, response);
System.out.println("doFilter()호출 후 two");
}
public void destroy() {
System.out.println("destroy()호출..two");
}
}
package filters;
import java.io.IOException;
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.HttpFilter;
@WebFilter("/second")
public class FlowFilterTwo extends HttpFilter implements Filter {
public FlowFilterTwo() {
super();
}
public void init(FilterConfig fConfig) throws ServletException {
System.out.println("init() 호출...two");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("doFilter()호출 전 two");
chain.doFilter(request, response);
System.out.println("doFilter()호출 후 two");
}
public void destroy() {
System.out.println("destroy()호출..two");
}
}
package filters;
import java.io.IOException;
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.HttpFilter;
@WebFilter("/testServlet2")
public class EncodingFilter extends HttpFilter implements Filter {
public EncodingFilter() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// place your code here
System.out.println("encodingfilter 호출전");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// pass the request along the filter chain
chain.doFilter(request, response);
System.out.println("encodingfilter 호출후");
}
public void init(FilterConfig fConfig) throws ServletException {
}
}