728x90
반응형
웹 쇼핑몰 - 예외 처리 페이지 만들기
[page디렉티브 태그에 errorPage속성을 이용하여 오류페이지 호출하기]
1. 오류페이지 작성하기
exceptionNoProductId.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/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">
<!-- 오류가 발생했을 때 해당 오류 페이지를 출력하도록 표현문 태그에 request 내장 객체의 getRequestURL()메소드를 작성한다.
또한 요청 파라미터를 출력하도록 표현문 태그에 request 내장 객체의 getQueryString()메소드를 작성한다. -->
<p><%=request.getRequestURL()%>?<%=request.getQueryString() %>
<p><a href="products.jsp" class="btn btn-secondary">상품 목록»</a>
</div>
<hr>
<%@ include file ="footer.jsp" %>
</body>
</html>
2. 상품 상세보기 페이지 수정하기 : product.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="dto.Product" %>
<%@ page import="dao.ProductRepository" %>
<%@ page errorPage="exceptionNoProductId.jsp" %><!--페이지가 실행되는 도중에 오류가 발생했을 때
오류 페이지 호출할수있도록 page디렉티브 태그에 errorPage 속성을 작성-->
전체
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="dto.Product" %>
<%@ page import="dao.ProductRepository" %>
<%@ page errorPage="exceptionNoProductId.jsp" %>
<%-- <jsp:useBean id="productDAO" class="dao.ProductRepository" scope="session"/> --%>
<html>
<head>
<!-- <link rel="stylesheet" href="./resources/css/bootstrap.min.css"> -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>상품 상세 정보 </title>
</head>
<body>
<%@ include file ="menu.jsp" %>
<div class = "jumbotron">
<div class = "container">
<h1 class="display-3">상품 정보 </h1>
</div>
</div>
<%
String id = request.getParameter("id");
//Product product = productDAO.getProductById(id); //자바빈즈 사용
//ProductRepository 클래스의 객체변수 instance 를 호출하는 getInstance()메소드를 작성한다.
//이를 통해 getProductById()메소드를 호출하여 반환 결과 값을 Product객체타입의 변수 Product에 저장한다.
ProductRepository dao = ProductRepository.getInstance();
Product product = dao.getProductById(id);
%>
<div class = "container">
<div class="row">
<div class="col-md-5">
<img src="/Users/hansollee/jspimg/<%=product.getFilename()%>" style="width:100%">
</div>
<div class="col-md-6">
<h3><%= product.getPname() %></h3>
<p><%= product.getDescription() %>
<p> <b> 상품 코드 : </b> <span class="badge badge-danger">
<%= product.getProductId() %></span>
<p><b>제조사</b> : <%=product.getManuFacturer() %>
<p><b>분류</b> : <%=product.getCategory() %>
<p><b>제고 수</b> : <%=product.getUnitsInStock() %>
<h4><%=product.getUnitPrice() %>원</h4>
<p> <a href="#" class="btn btn-info">
상품 주문 »</a>
<a href="./products.jsp" class="btn btn-secondary">
상품 목록 »</a>
</div>
</div>
<hr>
</div>
<jsp:include page="footer.jsp"/>
</body>
</html>
3. 프로젝트 실행하기
[web.xml 파일에 오류 코드로 오류 페이지 호출하기]
1. web.xml 파일에 추가 작성하기
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<security-role>
<description></description>
<role-name>admin</role-name>
</security-role>
<security-constraint>
<display-name>WebMarket Security</display-name>
<web-resource-collection>
<web-resource-name>WebMarket</web-resource-name>
<description></description>
<url-pattern>/addProduct.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><!--오류가 발생했을 때 오류 코드 400을 설정하도록 <error-code> 요소를 작성-->
<location>/exceptionNoPage.jsp</location><!--오류가 발생했을 떄 오류페이지 exceptionNoPage.jsp를 호출하도록
<location>요소를 작성-->
</error-page>
</web-app>
2. 오류 페이지 작성하기
exceptionNoPage.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/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>
<p><a href="products.jsp" class="btn btn-secondary">상품 목록»</a>
</div>
<hr>
<%@ include file ="footer.jsp" %>
</body>
</html>
3. 프로젝트 실행하기
웹 브라우저에 'http://localhost:8080/WebMarket/productss.jsp' 를 입력하여 실행 결과를 확인한다.
요약
01 예외 처리의 개요
- 예외를 처리하는 프로그램이 처리되는 동안 특정한 문제가 발생했을 때 처리를 중단하고 다른 처리를 하는 것으로 오류 처리라고도 한다.
02 page 디렉티브 태그를 이용한 예외 처리
- errorPage 속성으로 오류 페이지 호출하기 : errorPage속성은 오류 페이지를 호출하는 page디렉티브 태그의 속성으로 형식은 다음과 같당.
<%@ page errorPage="오류 페이지 URL"%>
- isErrorPage 속성으로 오류 페이지 만들기: isErrorPage 속성은 현재 JSP페이지를 오류 페이지로 호출하는 page디렉티브 태그의 속성으로 형식은 다음과 같다.
<%@ page isErrorPage = "true" %>
03 web.xml 파일을 이용한 예외 처리
- web.xml파일을 이용한 예외 처리는 web.xml 파일을 통해 오류 상태와 오류 페이지를 보여주는 방법이다.
- 오류 코드로 오류 페이지 호출하기
<error-page>
<error-code>오류 코드</error-code>
<location>오류 페이지의 URI</location>
</error-page>
- 예외 유형으로 오류 페이지 호출하기
<error-page>
<exception-type>예외 유형</exception-type>
<location>오류 페이지의 URI</location>
</error-page>
04 try-catch-finally를 이용한 예외 처리
- try-catch-finally 는 자바의 예외 처리 구문으로 스크립틀릿 태그에 작성하며 형식은 다음과 같다.
try{
//예외가 발생할 수 있는 실행문
}
catch{
//예외 처리문
}
[finally{
//예외와 상관없이 무조건 실행되는 문장(생략 가능)
}]
728x90
반응형
'JSP, Servlet, MySQL > JSP - webmarket' 카테고리의 다른 글
JSP Servlet 필터 : 로그 기록하기 2 (1) | 2024.01.15 |
---|---|
JSP Servlet 필터 : 로그 기록하기 (0) | 2024.01.14 |
JSP Servlet 예외 처리 : 예외 처리 페이지 만들기 (3) | 2024.01.13 |
JSP Servlet 시큐리티 : 상품 등록 페이지의 보안 처리하기 2 (0) | 2023.09.15 |
JSP Servlet 시큐리티 : 상품 등록 페이지의 보안 처리하기 (0) | 2023.09.15 |