728x90
톰켓으로 오류처리하는것
web.xml에 코드작성
<!--상태 코드를 사용하여 오류 페이지 설정 시작
web.xml : tomcat서버의 설정
스프링 웹 프로젝트가 실행되면 가장 먼저 web.xml 파일을 읽어들이고
위부터 아래로 읽어드리면서 태그를 해석함
HTTP 오류코드
400 : Bad Request. 문법 오류(잘못 입력한 url)
404* : Not Found, 요청한 문서를 못찾음(url확인 및 캐시 삭제 필요)
405 : Method not allowed. 메소드 허용 안됨 (메소드 매핑이 안 될때)
415 : 서버 요청에 대한 승인 거부(contentType, Content Encoding 데이터 확인 필요)
500* : 서버 내부 오류, (웹 서버가 요청사항을 수행할 수 없음, 개발자 오류)
505 : Http Version Not Supported
error-code : HTTP상태 코드
location : 이동 대상 페이지 또는 URI
-->
<error-page>
<error-code>400</error-code>
<location>/error/error400</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/error404</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/error500</location>
</error-page>
</web-app>
이건 전체 코드
<?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">
<!--
web.xml : tomcat서버의 설정
웹 프로젝트의 배포 설명자/배치 기술서(deployment description)이며, 웹 프로젝트가 배포되는 데 이용되는 XML 형식의
자바 웹 애플리케이션 환경 설정 부분을 담당함
스프링 웹 프로젝트가 실행되면 가장 먼저 web.xml 파일을 읽어들이고 위부터 차례대로 태그를 해석함
1) 네임 스페이스 : 코드에서 이름은 같지만 내용이 전혀 다른 요소와 충돌하지 않도록 요소들을 구별하는 데 사용함
2) 스키마 : 코드의 구조와 요소, 속성의 관계를 정의하여 다양한 자료형을 사용할 수 있도록 정의된 문서 구조, 즉 틀을 의미
xsi:schemaLocation 속성은 참조하고자 하는 인스턴스 문서의 URI를 지정함
두 개의 속성 값은 공백으로 구분. 첫 번재는 사용할 네임 스페이스(보통 기본 네임 스페이스와 동일)이고,
두 번째는 참조할 스키마 파일 이름
-->
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!-- 파일업로드 설정 시작 -->
<multipart-config>
<location>c:\\upload</location><!-- 어딘데? -->
<max-file-size>20971520</max-file-size><!-- 최대가 얼만데? 20MB -->
<max-request-size>41943040</max-request-size><!-- 한번에 최대가 얼만데? 40M -->
<file-size-threshold>20971520</file-size-threshold><!-- 메모리 사용 크기 : 20MB -->
</multipart-config>
<!-- 파일업로드 설정 끝 -->
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 한글 처리.. request.setCharacterEncoding("UTF-8") 안해도 됨-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 파일업로드 설정 시작.한글 처리 다음에 넣기! -->
<filter>
<display-name>springMultipartFilter</display-name>
<filter-name>springMultipartFilter</filter-name>
<filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>springMultipartFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 파일업로드 설정 끝 -->
<!--상태 코드를 사용하여 오류 페이지 설정 시작
web.xml : tomcat서버의 설정
스프링 웹 프로젝트가 실행되면 가장 먼저 web.xml 파일을 읽어들이고
위부터 아래로 읽어드리면서 태그를 해석함
HTTP 오류코드
400 : Bad Request. 문법 오류(잘못 입력한 url)
404* : Not Found, 요청한 문서를 못찾음(url확인 및 캐시 삭제 필요)
405 : Method not allowed. 메소드 허용 안됨 (메소드 매핑이 안 될때)
415 : 서버 요청에 대한 승인 거부(contentType, Content Encoding 데이터 확인 필요)
500* : 서버 내부 오류, (웹 서버가 요청사항을 수행할 수 없음, 개발자 오류)
505 : Http Version Not Supported
-->
<error-page>
<error-code>400</error-code>
<location>/error/error400</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error/error400</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/error400</location>
</error-page>
</web-app>
Utill패키지 안에 ErrorController 클래스 생성
ErrorController클래스
에서 에러 처리할 url 메소드 작성
package kr.or.ddit.util;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ErrorController {
//요청URI : /error/error400
@GetMapping("/error/error400")
public String error400() {
//forwarding
return "error/error400";
}
//요청URI : /error/error404
@GetMapping("/error/error404")
public String error404() {
//forwarding
return "error/error404";
}
//요청URI : /error/error500
@GetMapping("/error/error500")
public String error500() {
//forwarding
return "error/error500";
}
}
를 작성한다.
그리고 url 에 맞는 폴더 및 jsp생성해준다.
jsp에 오류를 처리할 코드를 작성한다.
error400.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<section class="content">
<div class="error-page">
<h2 class="headline text-warning">400</h2>
<div class="error-content">
<h3>
<i class="fas fa-exclamation-triangle text-warning"></i> Oops! Bad
Request.
</h3>
<p>
We could not find the page you were looking for. Meanwhile, you may
<a href="/">return to dashboard</a> or try using the search form.
</p>
</div>
</div>
</section>
error500.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<section class="content">
<div class="error-page">
<h2 class="headline text-danger">500</h2>
<div class="error-content">
<h3>
<i class="fas fa-exclamation-triangle text-danger"></i> Oops!
Something went wrong.
</h3>
<p>
We will work on fixing that right away. Meanwhile, you may <a
href="/">return to dashboard</a> or try using the
search form.
</p>
</div>
</div>
</section>
그리고 서버 재가동 후 확인해보기
없는 url치묜!!! 끝!
결과 확인!
'Spring > Spring 기초' 카테고리의 다른 글
Spring 시큐리티 환경설정 (0) | 2023.08.11 |
---|---|
spring 어노테이션을 이용한 예외처리 (0) | 2023.08.11 |
Spring 트랜젝션 제어 처리 (0) | 2023.08.11 |
AOP log(횡단관심사) (0) | 2023.08.11 |
hibernate 라이브러리 (0) | 2023.08.09 |