728x90
반응형
Filter |
|
Request과 Response에 대한 정보들을 변경할 수 있게 개발자들에게 제공하는 서블릿 컨테이너 - javax.servlet패키지에서 제공하는 Filter인터페이스를 이용함 |
|
Request 필터 - 인증(사용자 인증) - 요청 정보를 로그 파일로 작성 - 암호화 인코딩 작업 등의 기능을 처리 |
Response 필터 - 응답 결과 데이터 압축 - 응답 결과에 내용 추가/수정 - 총 서비스 시간 측정 |
필터를 사용하기 위한 선행 조건 필터클래스 생성 - 조건 : 반드시 javax.servlet.Filter 인터페이스를 상속받은 클래스로 생성 - 구성 : 초기에 실행되는 메소드init(), 실제로 요청한 url에 부합되면 실행되는 실행메소드 doFilter(), 필터객체가 소멸되기 전에 실행되는 종료메소드destroy() 로 구성된다. |
|
![]() |
|
jsp는 필터를 만들때 기본이 어노테이션 기반으로 만들어지므로, 어플리케이션으로 명시적인 필터를 구현하려면 web.xml 파일에 직접 Filter태그를 이용하여 필터 설정을 해주어야만 한다. 여러 개의 필터 클래스에 동일한 url패턴을 설정할 수 있다 |
|
![]() |
Filter
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3>회원가입</h3> <form action="18_01_filter01_process.jsp" method="post"> <p>이름 : <input type="text" name="name"> <input type="submit" value="전송"></p> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% String name = request.getParameter("name"); String name1 = (String) request.getAttribute("name"); %> <p> 입력된 파라미터 name값 : <%=name %></p> <p> 입력된 속성 name값 : <%=name1 %></p> </body>-- </html>
package com.filter; import java.io.IOException; import java.io.PrintWriter; 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 AuthenFilter */ //@WebFilter(filterName = "Filter01", urlPatterns = { "/18_01_filter01_process.jsp" }) public class AuthenFilter extends HttpFilter implements Filter { /* protected FilterCongin gilterConfig */ // urlPatterns : 해당 클래스로 요청이들어오면 // 여러 개의 필터 클래스에 동일한 url패턴을 설정할 수 있다. // 필터 객체가 생성될 때 호출되는 메소드이다. // 필터 객체는 웹 애플리케이션 서비스가 올라가면서(웹서버가 시작될때) // 탐캣이 실행되는 순간 한 번만 실행,생성,호출되며, init()메소드에는 주로 초기화 기능을 구현한다. public void init(FilterConfig fConfig) throws ServletException { System.out.println("Filter01 초기화..."); // this.filterConfig = filterConfig; } // doFilter()메소드는 필터링 설정한 서블릿을 실행할 때마다 호출되는 메소드로서 // 실제 필터링 기능을 구현하는 메소드임 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here // pass the request along the filter chain System.out.println("Filter01.jsp 수행.."); request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); request.setAttribute("name", "김고은"); if (name == null || name.equals("")) { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); String message = "입력된 name값은 null입니다."; writer.println(message); return; } // 1. request파라미터를 이용해 요청의 필터 작업 수행 // 2. 체인의 다음 필터 처리 // 3. response를 이용해 응답의 필터링 작업 filterChain.doFilter(request, response); } // 필터 객체가 삭제 될 때 호출하는 메소드임. // 주로 자원 해제 기능을 구현한다. public void destroy() { System.out.println("Filter01 해제..."); // this.filterConfig = null; } public AuthenFilter() { super(); // TODO Auto-generated constructor stub } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>jspthree</display-name> <filter> <filter-name>Filter01</filter-name> <filter-class>com.filter.AuthenFilter</filter-class> </filter> <filter-mapping> <filter-name>Filter01</filter-name> <url-pattern>/18_01_filter01_process.jsp</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.jsp</welcome-file> <welcome-file>default.htm</welcome-file> </welcome-file-list> </web-app>
728x90
반응형
'[JAVA]' 카테고리의 다른 글
[JSP] 오라클연결 - select, insert, update (0) | 2024.03.21 |
---|---|
[JSP] API (0) | 2024.03.21 |
[JSP] filter - monitor.log (0) | 2024.03.20 |
[JSP] cookies (0) | 2024.03.20 |
[JSP] session - getMaxInactiveInterval, getCreationTime, getLastAccessedTime (0) | 2024.03.20 |