kjh95.tistory.com/246

     

    JSP | Bootstrap 자바빈 활용 웹스토어 예제 DTO DAO ☆☆☆ | MVC model 1

    부트스트랩 include 시간 나타내기 예제 welcome.jsp <%@page import="java.util.Calendar"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 스토어..

    kjh95.tistory.com


    ProductId가 없는 페이지가 넘어올때 예외처리 예제

    정상적인 화면

    exceptionNoProductId.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>상품 아이디 오류</title>
      <link rel="stylesheet" href="./resources/css/bootstrap.min.css">  
    </head>
    <body>
    	<jsp:include page="menu.jsp"/>
    
    	<div class="jumbotron">
    		<div class="contaner">
    			<h1 class="alert alert-danger">해당 상품이 존재하지 않습니다.</h1>
    		</div>
    	</div>
    	
    	<div class="container">
    		<!-- 요청 URL을 표시, 요청 피라미터 값도 같이 표시 -->
    		<p><%= request.getRequestURL() %>?<%=request.getQueryString() %>
    		<p><a href="products.jsp">상품 목록 &raquo;</a>
    	</div>	
    </body>
    </html>

     

    product.jsp

    <%@page import="kr.gov.dto.Product"%>
    <%@page import="kr.gov.dao.ProductRepository"%>
    <%@page errorPage="exceptionNoProductId.jsp" %> <!-- id값이 유효하지 않으면 에러페이지로 이동시킨다. -->
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%-- <jsp:useBean id="productDAO" class="kr.gov.dao.ProductRepository" scope="session"/> --%>
    
    <% request.setCharacterEncoding("UTF-8"); %>
        
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>상품 상세 정보</title>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"> 
    </head>
    <body>
    	<jsp:include page="menu.jsp"/>
    	
    	<div class="jumbotron">
    		<div class="contaner">
    			<h1 class="display-3">상품 정보</h1>
    		</div>
    	</div>
    	
    	<%	
    		//넘어온 상품 아이디값을 얻었다.
    		String id =request.getParameter("id");
    		
    		ProductRepository dao = ProductRepository.getInstance();
    		
    		//넘어온 상품아이디값을 이용해 실제 해당되는 Product객체를 얻음.
    		Product product = dao.getProductById(id);
    	%>
    	
    	<div class="container">
    		<div class="row">
    			<div class="col-md-5">
    				<img alt="" src="C:/workspace-jsp/upload/<%=product.getFilename() %>" style="width:100%">
    			</div>
    			<div class="col-md-6">
    				<h3><%=product.getPname() %></h3>
    				<p><%=product.getDescription() %></p>
    				<p><b>상품 코드 :</b><span class="badge badge-danger" ><%=product.getProductId() %><span></b></p>
    				<p><b>제조사 : </b><%=product.getMenufecturer() %></p>
    				<p><b>분류 : </b><%=product.getCategory() %></p>
    				<p><b>제고 수 : </b><%=product.getNumberOfstock() %></p>
    				<h4><%=product.getUnitprice() %>원</h4>
    				
    				<p><a href="addProduct.jsp" class="btn btn-info">상품 등록&raquo;</a></p>
    				<a href="./products.jsp" class="btn btn-secondary">상품 목록&raquo;</a>
    			</div>
    		</div>
    		<hr>
    	</div>
    	<jsp:include page="footer.jsp"/>
    </body>
    </html>

     

    getRequestURL() 출력하는 값

    <%= request.getRequestURL() %>?<%=request.getQueryString() %>
    http://localhost:8080/WebStore/product.jsp?id=P1234

    product.jsp에 추가

    <%@page errorPage="exceptionNoProductId.jsp" %>

    id값이 없을 경우 에러 페이지


    404 페이지 오류 처리 예제 

    이 페이지를 설정한 에러 안내 페이지로 변경

    exceptionNoPage.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>상품 아이디 오류</title>
      <link rel="stylesheet" href="./resources/css/bootstrap.min.css">  
    </head>
    <body>
    	<jsp:include page="menu.jsp"/>
    
    	<div class="jumbotron">
    		<div class="contaner">
    			<h2 class="alert alert-danger">요청하신 페이지를 찾을 수 없습니다.</h2>
    		</div>
    	</div>
    	
    	<div class="container">
    		<!-- 요청 URL을 표시 -->
    		<p><%= request.getRequestURL() %>
    		<p><a href="products.jsp" class="btn btn-secondary">상품 목록 &raquo;</a>
    	</div>	
    </body>
    </html>

     

     

    web.xml                  예외처리를 전체등록 하기 위해서 web.xml에 등록한다. 

    C:\workspace-jsp\WebStore\WebContent\WEB-INF\web.xml

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>WebStore</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      <!-- 404에러가 발생하면 자동으로 exceptionNoPage.jsp 페이지 보여주게 된다.  -->
      <error-page>
      	<error-code>404</error-code>
      	<location>/exceptionNoPage.jsp</location>
      </error-page>
    </web-app>

     

    없는 페이지 요청 했을경우 404 에러 페이지

    에러코드 확인하는 사이트

    developer.mozilla.org/ko/docs/Web/HTTP/Status

     

    HTTP 상태 코드 - HTTP | MDN

    BCD tables only load in the browser HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉

    developer.mozilla.org

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading