어제도 비슷한 줄을 따라 question에게 물었습니다. 그 질문에 나는 글로벌 필터 (이미 가지고있는 필터)를 제안했다.JSP에서 오류를 catch하고 throw하는 방법
그래서 나는 그것을 실패 할 그것이 실패했을 때 나는 그것이 우리의 중앙 오류 페이지로 가고 싶어하기 때문에 널 (null)입니다 내가 의도적으로 전달하고 위의 코드에서
....code...code
..tags...html...code
Object [] res = iBatisDAO.getReport_pging(null,null,0,null); //call to DB
...more code...
...tags...end
다음과 같은 JSP 있습니다. 내 web.xml에 다음을 가지고 있습니다.
'control'은 내가 가지고있는 전역 필터를 통해 위의 JSP로옵니다. chain.doFilter()
이 try/catch
블록으로 싸여 있습니다. exception
이 발생하면 Error.jsp로 리디렉션됩니다.
오류가 발생하면 ... 중앙 오류 페이지에서 캐치되지 않으며 필터에서 포착되지도 않습니다. 나는 필터가 'jsp'를 호출 할 때 그것을 잡아 내지 못한다고 생각한다 ... 아직 오류가 없다.
나는 DB 내부의 호출이 JSP 내부에서는 좋지 않지만 나는 많은 레거시 코드를 다루고있다.
이 시나리오에서 오류를 중앙 집중식 오류 페이지로 이동 시키려면 어떻게해야합니까? 또한 JSP에는 가져온 오류 페이지가 없습니다. 모든 JSP에 오류 페이지를 가져 오는 옵션을 원하지 않습니다. 좀 더 일반적인 해결책을 원합니다.
매핑됩니다. 예외가 JSP 내부에서 발생하기 때문에 필터가 예외를 어떻게 잡을까요? ... – drake
@drake JSP가 Servlet으로 변환됩니다. 그래서 서블릿에서 발생하는데, 이것은'chain.doFilter()'다음에 처리됩니다. 예외에서 생성 된 스택 추적을 제공하십시오. – Bozho
예외 메시지 :'org.springframework.jdbc.UncategorizedSQLException : SqlMapClient operation; SQL []에 대한 분류되지 않은 SQLException SQL 상태 [null]; 오류 코드 [17004];'web.xml에서 잡으려고합니다. 이제 코드가 chain.doFilter에 대한 catch 블록에 있음을 알았습니다. 그러나 catch 블록에서'response.sendRedirect'를 시도 할 때 응답이 이미 설정되었으므로 실패합니다. 이 문제를 해결할 방법이 있을까요? – drake