본문 바로가기
JSP/JSP기초

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

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

 

filter 태그와

filter-mapping 태그를 정의한다

 

filter 태그 안에있는 filter-name과

filter-mapping 태그안에 filter-name이 같아야 함

 

init-param 태그는 파라미터를 미리 정의 해 둘 수있다.

거기에 param1과 param2의 value값을 각각 admin 과 1234로 넣어줫다.

뒤에서 id와 passwd로 사용할 예정

 

  <!-- Filter이넡페이스의 구현 클래스 
  init-param : InitParamFilter 클래스의  init()메소드로 파라미터를 전달
  -->
  <filter>
  	<filter-name>Filter02</filter-name>
  	<filter-class>filter.InitParamFilter</filter-class>
  	<init-param>
  		<param-name>param1</param-name>
  		<param-value>admin</param-value>
  	</init-param>
  	<init-param>
  		<param-name>param2</param-name>
  		<param-value>1234</param-value>
  	</init-param>
  	
  </filter>
  <!--  Filter02로 연결된 필터를 사용할 URL -->
  <filter-mapping>
  	<filter-name>Filter02</filter-name>
  	<url-pattern>/ch12/filter02_process.jsp</url-pattern>
  </filter-mapping>

 

 

filter-class안에 정의해둔 filter패키지 안에 InitParamFilter를 생성한다.

 

 

Filter 검색해서 톰캣 서버에 있는 filter선택 후  InitParamFilter (위에서 설정해둔 이름)으로  클래스 생성

 

 

 

 

 

 

 

클래스 작성

 

 

 

 

package 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;

public class InitParamFilter implements Filter {
	private FilterConfig filterConfig = null;
	
	/*
  	<init-param>
  		<param-name>param1</param-name>
  		<param-value>admin</param-value>
  	</init-param>
  	<init-param>
  		<param-name>param2</param-name>
  		<param-value>1234</param-value>
  	</init-param>
	*/
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("Filter02 초기화...");
		this.filterConfig = filterConfig;
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("Filter02 수행...");
		//사용자가 입력한 요청파라미터
		//filter02_process.jsp?id=admin&passwd=1234
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		
		//web.xml에서 넘어온 파라미터
		String param1 = this.filterConfig.getInitParameter("param1");//admin
		String param2 = this.filterConfig.getInitParameter("param2");	//1234
		
		String message;
		
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter writer = response.getWriter();
		if(id.equals(param1) && passwd.equals(param2)) {
			message = "로그인 성공";
		}else {
			message = "로그인 실패";
		}
		
		writer.println(message);
		//다음 필터로 제어를 넘김
		chain.doFilter(request, response);
		
	}

	@Override
	public void destroy() {
		System.out.println("Filter02 종료...");
		
	}

}

서버를 재가동하게 되면 init메소드에 처음부터 파라메터값이 세팅이 된다.

 

그 후 doFolter() 메소드에서

request객체에서 id값과 passwd값을 받아서

사용자로 입력받은 값이랑 비교

메소드 정의 해줌

 

 

 

filter02관련

.jsp파일 생성

 

 

 

 

 jsp파일 작성

 

 

 

 

출력화면

 

 

 

 

 

 

로그인 성공시

 

 

 

로그인 실패시