개요

  • 프로그램이 처리되는 동안 특정한 문제가 발생했을 때 처리를 중단하고 다른 처리를 하는 것
  • 기본 오류 페이지의 경우 디렉토리 구조, 버전 등 정보가 나타나 있기 때문에 웹 보안이 취약하여 쉽게 해킹 당할 수 있음. 이런 정보의 노출을 최소화 하여 해킹의 위험을 낮추는 것

error 속성 (디렉티브 태그)

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>오류가 발생하였습니다.</p>
<p>예외 유형 : <%=exception.getClass().getName() %>
<p>오류 메시지: <%=exception.getMessage() %>
</body>
</html>
  • exception 내장 객체를 통해서 오류 메시지를 받아 오는 것이 가능
  • 예외처리 방법
    • web.xml 파일의 error 속성에서 오류 유형에 오류 페이지 URL 설정
    • 스크립틀린 태그의 자바 소스를 통한 예외 처리 try-catch-finally 구문

필터

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;

	@Override
	public void destroy() {
		Filter.super.destroy();
	}

	@Override // 필터 초기화 메소드, 아이디와 비밀번호 정보가 들어감 
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
			throws IOException, ServletException {
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String message;
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		String param1 = filterConfig.getInitParameter("param1");
		String param2 = filterConfig.getInitParameter("param2");
		PrintWriter writer = response.getWriter();
		if (id.equals(param1) && passwd.equals(param2)) {
			message = "로그인 성공";
		} else {
			message = "로그인 실패";
		}
		writer.println(message);
		filterChain.doFilter(request, response);
	}
}
  • 클라이언트와 서버 사이 request와 response 객체를 먼저 받아 사전/사후 작업 등 공통적으로 필요한 부분 처리
  • 정적 리소스에서 클라이언트로 응답하기 전 필요한 전처리를 가능하게 함

'Development > JSP' 카테고리의 다른 글

MVC 패턴  (0) 2023.06.02
다국어 처리& 시큐리티  (0) 2023.05.18
세션 & 쿠키  (0) 2023.05.10
유효성 검사  (0) 2023.05.10
파일 업로드  (0) 2023.05.09

+ Recent posts