berryberrybin / kosta-jsp

jsp study
0 stars 0 forks source link

Filter 개념 #16

Open berryberrybin opened 2 years ago

berryberrybin commented 2 years ago

Filter 개념

berryberrybin commented 2 years ago
image
berryberrybin commented 2 years ago
image
berryberrybin commented 2 years ago

Filter를 작성한 다음에 생성과 매핑 필수

메소드

public class SampleFilter implements Filter {

    private String message;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("SampleFilter init ");

        //init-param 정보 가져오기
        message = filterConfig.getInitParameter("messgae");
        System.out.println("message = "+ message);
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        //사전처리
        System.out.println("SampleFilter의 사전");

        //실제 target 대상을 호출
        //SampleFilter의 doFilter가 호출되는 것이 아닌 chain.의 doFilter가 호출된 것
        chain.doFilter(request, response);

        //사후처리      
        System.out.println("SampleFilter 사후 ");

    }

    @Override
    public void destroy() {

    }

}

web.xml 파일에 Filter 등록

연습 코드

  <filter>
    <filter-name>sampleFilter</filter-name>
    <filter-class>ex0331.filter.SampleFilter</filter-class>
    <init-param>
        <param-name>message</param-name>
        <param-value>오늘은 목요일</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>sampleFilter</filter-name>
     <url-pattern>/*</url-pattern> <!--전체의미함 /*-->
     <url-pattern>*.jsp</url-pattern> -->
         <url-pattern>/test02.jsp</url-pattern>
     <url-pattern>/testServlet</url-pattern>
  </filter-mapping>
berryberrybin commented 2 years ago

한글 Encording 문제 해결

image

image

Filter를 이용한 해결방법

@WebFilter(
        urlPatterns = { "/*" }, 
        initParams = { 
                @WebInitParam(name = "encoding", value = "UTF-8")
        })
public class EncodingFilter extends HttpFilter implements Filter {

    private String encodingValue;
    public void init(FilterConfig fConfig) throws ServletException {
        encodingValue=fConfig.getInitParameter("encoding");
        System.out.println("test ="+ encodingValue);
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        //사전처리
        request.setCharacterEncoding(encodingValue);

        chain.doFilter(request, response);

        //사후처리는 필요 없음 

    }
}