컴퓨터 이야기/프로그래밍

404 에러페이지, 작동이 안 되나요..?

래빗 크리스 2009. 10. 5. 23:12

작동이 되게 하려면..? 에~ 또. /WEB-INF/web.xml 를 손 봐야 하고..
잊어버리기 쉬운데, 404 에러를 처리하는 페이지도 손을 봐야 합니다.

/WEB-INF/web.xml 파일은 어플리케이션 서버쪽 Document Root 에 해당합니다.
간혹 웹 서버쪽에서 /WEB-INF/ 디렉토리(폴더) 찾으시는 분 계신데.. 대략 난감합니다. ㅠㅠ
2-Tier 구성으로 WAS(Web Application Server) 와 DBS(Database Server) 라면,
고민할 필요가 없는데 3-Tier 구조라면.. 고민해야 합니다.
3-Tier 라도 물리적인 머신이 1개이고 동일한 디렉토리(폴더) 를 사용한다면 문제없지만..
아무튼 3-Tier 구조라면 /WEB-INF/ 디렉토리(폴더)를 어플리케이션 서버에서 찾아야 합니다.
웹서버 쪽에 /WEB-INF/web.xml 이라고 생성해 봐야.. 사용되지 않습니다.

web.xml 에서는 <web-app ...> 와 </web-app> 태그 사이에 아래 내용을,
XML 태깅 규칙에 맞게 넣으면 됩니다. location 부분은 입맛에 맞게 변형해도 됩니다.
<error-page>
  <error-code>404</erro-code>
  <location>404.jsp</location>
</error-page>

예를들면, <web-app ..>..<welcome-file-list>..</welcome-file-list>..<error-page>..</error-page></web-app>
라고 하면 되겠네요.
간혹 주석 단다고 <!-- .. 한글 주석 .. --> 요렇게 한글을 사용하는 분 계신데,
web.xml 의 초두에 <?xml .. encoding=".."?> 라고 된 부분에서 encoding 을 잘못 처리했으면,
에러가 나서 해당 web.xml 이 사용되지 않는 수가 있습니다. 오류가 나기도 하공.. ㅋㅋ

아, 일반적인 오류를 나타내는 500 에러도 생각해 보세요.

이제 에러를 처리하는 페이지를 볼까요..?
페이지는 있는데 해당 페이지가 사용되지 않아서 곤란했던 분 계시죠..?
혹시 다음 코드가 들어가 있는지 확인해 보세요.
<% response.setStatus(HttpServletResponse.SC_OK); %>

그리고, 404 에러 처리 페이지에 한글이 사용된다면 encoding 도 신경써 줘야 합니다.
대략 아래와 같이 해 주면 되겠네요..
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<% request.setCharacterEncoding("EUC-KR"); %>

()()   v
(~.~)()
모쪼록 매일매일 행복하세요..