Filter에서 요청과 응답 값을 조작하는 것은, HttpServletRequestWrapper 클래스와 HttpSerlvetResponseWrapper 클래스로 한다. 생성자를 지정만 해준다면 HttpServletRequest를 매개값으로 굳이 전부 다 재정의 할 필요가 없는 Wrapper환경을 만들어 준다고 보면 될 듯 하다.
Filter의 doFilter메서드에서 값을 조작해야할 경우, 사용한다.
-
HttpServletRequestWrapper 클래스와 HttpSerlvetResponseWrapper 클래스를 상속한 클래스를 만든다.
-
상속클래스에서 원하는 메서드를 재정의한다.
-
해당 클래스를 생성하여 사용한다.
까지가 방법이다.
RequestWrapper클래스를 상속해서 getParameter 메서드를 재정의한 모습.
public class MyRequest extends HttpServletRequestWrapper{
public MyRequest(HttpServletRequest request) {
super(request);
// TODO Auto-generated constructor stub
}
@Override
public String getParameter(String name) {
if(name.equals("name")) {
String n = super.getParameter("name");
if(n == null) {
return "default name";
}else {
return n;
}
}
return super.getParameter(name);
}
}
Filter 구현클래스에서 사용된 모습이다.
public class FilterEx3 implements Filter {
public FilterEx3() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("Filter 3 작동");
MyRequest req = new MyRequest((HttpServletRequest)request);
// 변경된 request 메서드를 가진 HttpServletRequestWrapper를 Filter의 Chain으로 보냄
chain.doFilter(req, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
'JSP & Servlet' 카테고리의 다른 글
CharacterEncodingFilter (0) | 2020.07.17 |
---|---|
Servlet 수행 후 Filter를 거쳐서 응답보내기 (0) | 2020.07.17 |
Filter.1 (0) | 2020.07.17 |
**web.xml의 <load-on-startup> , <init-param> 태그 의 이해** (0) | 2020.07.16 |
**Servlet 경로매핑 , 우선순위.** (0) | 2020.07.16 |