본문 바로가기
JSP/JSP기초

JSP(Ch12) 필터 사용하는 방법 첫 번째 예제

by 미눅스[멘토] 2023. 7. 12.
728x90

 

 

클라이언트와 서버 사이에서 request와 response객체를 먼저 받아

사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것

순서는 클라이언트 필터 순서 로 간다

필터는 여러개로 붙일 수 있다 이것을 필터체인이라고 한다

 

 

 

2.Filter 인터페이스의 구현 클래스

 

인터페이스 = 부장님(큰그림정도 그림 큰일을 안함) 

부장 : 오늘은 국밥쪽으로 갈까?!?!

나 : 국밥 좋죠!! (거절 할 수 없음)

 

위에 init, doFilter,destory 3개 메소드는 꼭 써줘야함 아니면 에러남

 

 


 

Filter class 만들기

interface에 Add..클릭 해서

Filter검색

java.servlet - C:\apache......선택후 OK

 

 

 

인터페이스 추가된 것을 확인 후 finish

 

 

 

 

이런화면이 보임

 

 

 

보기 좋게 순서를 바꿈

 

 

 

 

package filter;

import java.awt.PrintGraphics;
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;

public class AuthenFilter implements Filter {

	//필터 시작, 초기화
	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("Filter01초기화 완료....");
		
	}
	
	//필터 기능 수행
	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
			throws IOException, ServletException {
		request.setCharacterEncoding("utf-8");
		System.out.println("Filter01 수행");
		// /ch12/filter01_process.jsp?name=개똥이
		String name =  request.getParameter("name"); //개똥이
		
		//응답 메시지를 담아서 서버에서 클라이언트로 전달해줌(response객체 활욜)
		if(name == null || name.equals("")) {
			response.setCharacterEncoding("utf-8");
			response.setContentType("text/html; charset= utf-8"); // MIME타입
			PrintWriter writer = response.getWriter();
			String message = "입력된 name값은 null입니다.";
			writer.println(message);
			return;
		}
		//필터가 여러개가 있을 떄 전달~전달 해줌
		filterChain.doFilter(request, response);
	}

	
	//필터 종료하기 전에 호출
	@Override
	public void destroy() {
		System.out.println("Filter01해제...");
		
	}

}

메소드 작성함

 

 

 

web.xml로 이동

 

 

 

 

 

filter태그와

filter-mapping 태그 작성

 

  <!-- Filter이넡페이스의 구현 클래스 -->
  <filter>
  	<filter-name>Filter01</filter-name>
  	<filter-class>filter.AuthenFilter</filter-class>
  </filter>
  <!--  Filter01로 연결된 필터를 사용할 URL -->
  <filter-mapping>
  	<filter-name>Filter01</filter-name>
  	<url-pattern>/ch12/filter01_process.jsp</url-pattern>
  </filter-mapping>

 

 

 

태그에서 사용한 필터 파일 생성

 

 

 

 

 

이름값을 name에 담아서 보냄

 

 

 

 

출력할 화면 

 

 

이순신이라는 값이 있을경우에는 정상적으로 process에서 출력함

 

 

결과

 

 

만약 입력값이 없다면

Filter클래스로 이동해서 doFilter쪽 메소드를 실행해서

String message = "입력된 name 값은 null입니다" 를 출력한다.

 

 

 

 

 

 

 

 

 

결과