K 개발자

JSP BookMarket 만들기 - 10 본문

Web/JSP

JSP BookMarket 만들기 - 10

ddingz 2021. 8. 6. 18:12

이전 글
JSP BookMarket 만들기 - 1
JSP BookMarket 만들기 - 2
JSP BookMarket 만들기 - 3
JSP BookMarket 만들기 - 4
JSP BookMarket 만들기 - 5
JSP BookMarket 만들기 - 6
JSP BookMarket 만들기 - 7
JSP BookMarket 만들기 - 8
JSP BookMarket 만들기 - 9

실행 환경
자바 개발 환경 : jdk-15.0.2
웹 서버 환경 : Apache Tomcat v9.0
통합 개발 환경 : Eclipse IDE for Enterprise Java Developers

예외 처리 페이지 만들기

page 디렉티브 태그에 errorPage 속성을 이용하여 오류 페이지를 호출하도록 작성한다.

  • WebContent 폴더에 오류 페이지 exceptionNoBookId.jsp 파일을 생성하고 오류 메시지를 출력하도록 작성한다.
  • WebContent 폴더의 도서 상세 보기 페이지 book.jsp 파일에 오류가 발생했을 때 오류 페이지를 호출하도록 작성한다.
<%-- exceptionNoBookId.jsp --%>
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
<title>도서 아이디 오류</title>
</head>
<body>
	<jsp:include page="menu.jsp" />
	<div class="jumbotron">
		<div class="container">
			<h2 class="alert alert-danger">해당 도서가 존재하지 않습니다.</h2>
		</div>
	</div>
	<div class="container">
		<p><%=request.getRequestURL()%>?<%=request.getQueryString()%>
		<p><a href="books.jsp" class="btn btn-secondary">도서 목록 &raquo;</a>
	</div>
</body>
</html>
<%-- book.jsp --%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Book"%>
<%@ page import="dao.BookRepository"%>
<%@ page errorPage="exceptionNoBookId.jsp"%>
<html>
<head>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css">
<title>도서 상세 정보</title>
</head>
<body>
	<jsp:include page="menu.jsp" />
	<div class="jumbotron">
		<div class="container">
			<h1 class="display-4">도서 정보</h1>
		</div>
	</div>
	<%
		String id = request.getParameter("id");
		BookRepository dao = BookRepository.getInstance();
		Book book = dao.getBookById(id);
	%>
	<div class="container">
		<div class="row">
			<div class="col-md-4">
				<img src="c:/upload/<%=book.getFilename()%>" style="width: 100%" />
			</div>
			<div class="col-md-8">
				<h4><b>[<%=book.getCategory()%>]<%=book.getName()%></b></h4>
				<p><%=book.getDescription()%>
				<p><b>도서코드 : </b><span class="badge badge-danger"> <%=book.getBookId()%></span>
				<p><b>저자</b> : <%=book.getAuthor()%>
				<p><b>출판사</b> : <%=book.getPublisher()%>
				<p><b>출판일</b> : <%=book.getReleaseDate()%>
				<p><b>총 페이지수</b> : <%=book.getTotalPages()%>
				<p><b>재고수</b> : <%=book.getUnitsInStock()%>
				<h4><%=book.getUnitPrice()%>원</h4>
				<p><a href="#" class="btn btn-info">도서주문 &raquo;</a> 
				<a href="./books.jsp" class="btn btn-secondary">도서목록 &raquo;</a>
			</div>
		</div>
		<hr>
	</div>
	<jsp:include page="footer.jsp" />
</body>
</html>

web.xml 파일에 오류 코드로 오류 페이지를 호출하도록 작성한다.

  • WebContent/WEB-INF 폴더의 web.xml 파일에 오류가 발생했을 때 오류 상태와 오류 페이지를 출력하도록 작성한다.
  • WebContent 폴더에 오류 페이지 exceptionNoPage.jsp 파일을 생성하고 오류 메시지를 출력하도록 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- web.xml -->

<web-app>
	<security-role>
		<description></description>
		<role-name>admin</role-name>
	</security-role>
	<security-constraint>
		<display-name>BookMarket Security</display-name>
		<web-resource-collection>
			<web-resource-name>BookMarket</web-resource-name>
			<description></description>
			<url-pattern>/addBook.jsp</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<description>권한 관리자명</description>
			<role-name>admin</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>/login.jsp</form-login-page>
			<form-error-page>/login_failed.jsp</form-error-page>
		</form-login-config>
	</login-config>
	<error-page>
		<error-code>404</error-code>
		<location>/exceptionNoPage.jsp</location>
	</error-page>
</web-app>
<%-- exceptionNoPage.jsp --%>
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
<title>페이지 오류</title>
</head>
<body>
	<jsp:include page="menu.jsp" />
	<div class="jumbotron">
		<div class="container">
			<h2 class="alert alert-danger">요청하신 페이지를 찾을 수 없습니다.</h2>
		</div>
	</div>
	<div class="container">
		<p><%=request.getRequestURL()%>
		<p><a href="books.jsp" class="btn btn-secondary">도서 목록 &raquo;</a>
	</div>
</body>
</html>

웹 브라우저에 'http://localhost:8080/BookMarket/book.jsp?id=ISBN0000' 또는 'http://localhost:8080/BookMarket/bookList.jsp'를 입력하여 실행 결과를 확인한다.

다음 글
JSP BookMarket 만들기 - 11
JSP BookMarket 만들기 - 12
JSP BookMarket 만들기 - 13
JSP BookMarket 만들기 - 마지막

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

JSP BookMarket 만들기 - 12  (0) 2021.08.06
JSP BookMarket 만들기 - 11  (0) 2021.08.06
JSP BookMarket 만들기 - 9  (0) 2021.08.06
JSP BookMarket 만들기 - 8  (0) 2021.08.06
JSP BookMarket 만들기 - 7  (0) 2021.08.06
Comments