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>
'문제풀이 > 쉽게 배우는 JSP 웹프로그래밍' 카테고리의 다른 글
[쉽게 배우는 JSP 웹프로그래밍] 14장 연습문제 (0) | 2020.11.20 |
---|---|
[쉽게 배우는 JSP 웹프로그래밍] 13장 연습문제 (0) | 2020.11.19 |
[쉽게 배우는 JSP 웹프로그래밍] 11장 연습문제 (0) | 2020.11.16 |
[쉽게 배우는 JSP 웹프로그래밍] 10장 연습문제 (0) | 2020.11.05 |
[쉽게 배우는 JSP 웹프로그래밍] 9장 연습문제 (0) | 2020.11.02 |
댓글