헬린코린이

[Servlet & JSP] Filter 본문

Programming/Servlet & JSP

[Servlet & JSP] Filter

HCD 2023. 1. 11. 19:34

필터는 말 그대로 클라이언트의 요청을 선처리하거나 서버의 자원을 가공하여 보내주는 역할을 한다.

이런 필터는 web.xml에 선언되어 계속해서 만들어지는 것이 아닌 한 번 만들어진 클래스가 계속해서 재사용 되는 아주 뛰어난 성능을 가지고 있다.

가장 많이 만나는 UTF-8 필터를 보겠습니다.

 

package controller;

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("*.jsp")
public class EncFilter extends HttpFilter implements Filter {
       
    private String encoding;
    
    public EncFilter() {
        super();
    }

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		request.setCharacterEncoding(this.encoding);
		chain.doFilter(request, response);
	}

	public void init(FilterConfig fConfig) throws ServletException {
		this.encoding=fConfig.getServletContext().getInitParameter("encoding");
	}

}

웹 프로젝트 설정에 관한 내용들을 web.xml에 저장하여 관리합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
   <context-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </context-param>
</web-app>

 

이렇게 관리하는 이유는 결합도를 낮추기위해 이렇게 관리합니다

결합도가 낮다는 것은 설정을 바꿔야할때 코드를 적게 바꾸는 것입니다.

Comments