Filter(필터) 란?
- client로 부터 요청이 들어 오면 filer를 통해 원하는 세팅을 미리 해줄 수 있다.
- 어떤 요청에 대해서 Filter 가 동작하게 할지 @WebFilter("요청경로 페턴") 어노테이션을 지정한다.
- doFilter() 메소드에서 원하는 동작을 한다.
- FilterChain 객체는 필터 기능이 완료되고 다음 페이지로 연결하는 기능에 사용한다.
Filter 만드는 방법
- Filter 인터페이스를 implements 한다.
- 메소드를 오버라이드 한다.
- @WebFilter("요청경로 페턴") 어노테이션을 지정한다.
@WebFilter("요청경로 작성")
public class EncodingFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
//필터가 동작 되면 호출되는 메소드
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
[예시]
post 방식으로 전송되는 모든 요청에 대해 한글인코딩이 되도록 필터를 만든다
@WebFilter("/*")
public class EncodingFilter implements Filter{
@Override
public void destroy() {
// TODO Auto-generated method stub
}
//필터가 동작 되면 호출되는 메소드
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//1. 인코딩이 설정되지 않았다면
if(request.getCharacterEncoding()==null) {
//post 방식 요청 했을때 한글 인코딩 설정을 해준다.
request.setCharacterEncoding("utf-8");
}
//요청의 흐름 계속 이어가기
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
post 방식으로 전송되는 input요소를 만들고 한글이 잘 출력되는지 확인해본다
//post 방식으로 입력 정보 전달
<body>
<h1>필터 테스트 home</h1>
<form action="insert.jsp" method="post">
<input type="text" name="name" placeholder="이름 입력..."/>
<input type="text" name="addr" placeholder="주소 입력..."/>
<button type="submit">저장</button>
</form>
</body>
// post 방식으로 전달된 내용 출력 jsp 페이지
<body>
<%
// 요청에 대한 한글 인코딩 setCharacterEncoding() 메소드 생략
// post 방식 전송된 파라미터 읽어오기
String name=request.getParameter("name");
String addr=request.getParameter("addr");
%>
<p> 이름 : <strong><%=name %></strong></p>
<p> 주소 : <strong><%=addr %></strong></p>
</body>
필터를 통해 이미 인코딩 작업이 이루어졌기 때문에
jsp 페이지에서 따로 한글에 대해 인코딩 작업을 해주지 않아도 정상적을 출력된다.
'Servlet&JSP' 카테고리의 다른 글
[JSP] EL(Expression Language) - 산술, 비교, 논리, empty 연산 (0) | 2020.01.21 |
---|---|
[비동기 통신] AJAX 통신 / Form 유효성 검증 (0) | 2020.01.13 |
[HttpServletResponse / HttpServletRequest] scope 스코프(영역) (0) | 2020.01.10 |
[HttpServletResponse / HttpServletRequest] 리다이렉트(redirect) / 포워드(forward) (0) | 2020.01.10 |
서버 프로그래밍에 대한 이해 context.xml /server.xml / web.xml (0) | 2020.01.08 |