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;
/**
* Servlet Filter implementation class EncFilter
*/
@WebFilter({ "*.do", "*.jsp" })
public class EncFilter extends HttpFilter implements Filter {
public EncFilter() {
super();
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 다음 필터가 존재한다면, 그곳으로 이동해라
// 더이상 수행할 필터가 없다면 원래 수행하던 요처으로 돌아가라
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}
System.out.println("필터 서블릿 클래스에서 작성한 로그");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
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({ "*.do", "*.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 {
// 다음 필터가 존재한다면, 그곳으로 이동해라
// 더이상 수행할 필터가 없다면 원래 수행하던 요처으로 돌아가라
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding(encoding);
// 로직 부분에 어떠한 값이 다이렉트로 적혀있다면 == 하드코딩 : 유지보수 용이성을 망가뜨리는 주범....
}
System.out.println("필터 서블릿 클래스에서 작성한 로그");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
// 최초에 단한번 실행 되는 메소드 : 유사 생성자 -> 해당 클래스의 인스턴스를 생성하고 초기화하는 역할
this.encoding = "UTF-8";
}
}
<?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>
하드코딩을 제거한 Filter에 인코딩된 로직 코드
<?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>
'개발일지 > JSP' 카테고리의 다른 글
에러페이지 설정하기 (0) | 2024.01.29 |
---|---|
JSTL 사용법 (0) | 2024.01.27 |
커스텀 태그 (0) | 2024.01.17 |
상세페이지 데이터 가져오기 (1) | 2024.01.08 |
JSP - 내장객체 (1) | 2024.01.08 |
댓글