0
나는 글로벌 예외 핸들러는 IOException가에 대한 ControllerAdvice를 사용하여 정의가, 나는 404스프링 MVC 404 오류 페이지
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(IOException.class)
public void handleIOException(){
logger.error("IOException");
//returning 404 error code
}
web.xml 파일
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 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/spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/resources/404.jsp</location>
</error-page>
내가 의도적으로 오전 반환하고 컨트롤러에 IOException이 발생하지만 404 오류 페이지를 사용하지 않습니다. 임의의 URL을 지정하면 404 페이지가 사용 중입니다.
예외 처리기와 함께 작동하지 않는 이유가 혼란 스럽습니다.
web.xml 파일의 관련 부분을 게시 할 수 있습니까? (spring mvc 설정) –
왜 IOException이 결국'/ resources/404.jsp'를 표시하게 될 것이라고 생각합니까? 핸들러가 반환되면 응답이 완료됩니다. – Bart
@Bart 스프링 컨테이너가 404 오류 코드를 반환하면 servlet 컨테이너는 web.xml의 오류 페이지 구성을보고 응답으로 구성된 페이지를 보냅니다. 내가 여기서 뭔가를 놓치고 있니? web.xml 콘텐츠가있는 게시물이 업데이트되었습니다. – Pankaj