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

+ Recent posts