본문 바로가기
문제풀이/쉽게 배우는 JSP 웹프로그래밍

[쉽게 배우는 JSP 웹프로그래밍] 12장 연습문제

by 그적 2020. 11. 19.

1. 필터란 무엇인가?

: 필터는 클라이언트와 서버 사이에서 request와 response 객체를 먼저 받아 사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것을 말한다.

 

 

2. Filter 인터페이스에 있는 메소드의 종류와 기능을 설명하시오.

: Filter 인터페이스 메소드 종류에는 필터 인스턴스의 초기화 메소드인 init( ... ), 필터 기능을 작성하는 메소드인 doFilter( ... ), 필터 인스턴스의 종료 전에 호출되는 메소드인 destroy() 메소드가 있다. 

 

 

3. web.xml 파일에 필터를 구성하는 요소의 종류를 설명하시오.

: <filter> 요소는 웹 애플리케이션에서 자바 필터와 매개 변수를 설정하는데 사용하고, <filter-mapping> 요소는 특정 리소스에 대해 어떤 필터를 사용할지 설정하는 데 사용한다.

<filter>
    <filter-name> 필터 이름 </filter-name>
    <filter-class> 클래스 이름 </filter-class>
    
    // 아래 <init-param> 요소는 옵션
    <init-param>
        <param-name> 매개변수 이름 </param-name>
        <param-value> 매개변수 값 </param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name> 필터 이름 </filter-name>
    <url-patter> 요청 URL 패턴 </url-pattern>
</filter-mapping>

 

 

4. Filter 인터페이스를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.

// loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Filter</title>
</head>
<body>

<form action="loginForm_process.jsp">
<p> 아이디 : <input type="text" name="id"> 
<p> 비밀번호 : <input type="text" name="passwd">
<input type="submit" value="전송">
</form>

</body>
</html>

// loginForm_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Filter</title>
</head>
<body>

<%
String id = request.getParameter("id");
String pw = request.getParameter("passwd");

if(id.equals("admin") && pw.equals("admin1234")){
%>
<p> 로그인 성공
<%
}else{
%>
<p> 로그인 실패
<%
}
%>

</body>
</html>

// loginForm_success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Filter</title>
</head>
<body>

<p>admin님 로그인을 성공했습니다.

</body>
</html>

// src 폴더에서 ch12.com.filter 패키지의 LoginCheckFilter.java 파일

package ch12.com.filter;

import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LoginCheckFilter implements Filter {

	private FilterConfig filterConfig = null;

	@Override
	public void init(FilterConfig filterConfig) throws ServletException{
		this.filterConfig  = filterConfig;
	}
	
	@Override
	public void destroy() {
		
	}
	
	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		// TODO Auto-generated method stub
		
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		HttpSession session = request.getSession();
		
		if(session == null) {
			response.sendRedirect("loginForm.jsp");
		}
		
	}

}

// WEB_INF 폴더에 web.xml 파일에 아래 코드 추가

	<filter>
		<filter-name>loginFilter</filter-name>
		<filter-class>ch12.com.filter.LoginCheckFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>loginFilter</filter-name>
		<url-pattern>/ch12/loginForm_success.jsp</url-pattern>
	</filter-mapping>

댓글