2010-12-08 7 views
6

I (Tomcat) bir JSP sayfası vardır JSP hata işleyicileri HTTP durum kodunu ayarlamak için. Ancak bu JSP Etiketleri istisnalar atayabilir (Örneğin, parametre değerleri geçersiz olduğunda). Şimdi bu durum için daha iyi bir hata işleme uygulamak istiyorum. Bir istisna işleyicisi GLOBALLY belirtmek için bir yol bulamadı (web.xml hata sayfası tanımları bir JSP atılan istisnalar için çalışmaz). Şimdiye kadar bulduğum tek yol, ALL JSP dosyalarının sayfa üstbilgisinde bir errorPage özniteliğinin belirtilmesidir.Nasıl bazı verileri almak için JSP Etiketler kullandığı

<% page errorPage="/WEB-INF/jsp/errors/500.jsp" %> 

TÜM JSP'ler için bunu yapmak, ancak kabul edilebilir sıkıntı verici. Ancak kabul edilebilir değil, hata sayfası her zaman 200 HTTP durum kodu ile teslim ediliyor olmasıdır. Bunun yerine 500 istiyorum. Ben errorPage yerine JSP olarak servlet kullanarak çalıştı ve aynı zamanda response.setStatus (500) ve response.sendError (500) ayarlamak için çalıştı ama hem çağrılarını gözardı gibi görünüyor. Yani bu kod baskılar "200" iki kere ve hiçbir fikrim yok neden:

System.out.println(response.getStatus()); 
response.setStatus(500); 
System.out.println(response.getStatus()); 

Yani soru şu: Ben JSP hata işleyicileri HTTP durum kodu ayarlayabilirsiniz nasıl?

cevap

4

Sen web.xml da hata sayfaları yapılandırabilirsiniz. senin 500.jsp yılında

<error-page> 
     <error-code> 
      500 
     </error-code> 
     <location> 
      /500.jsp 
     </location> 
    </error-page> 

, daha iyi sendError(500) kullanmak istiyorum, <%@ page isErrorPage="true" %>

+1

. Servlet'te atılan istisnaları yakalamak için web.xml'de tam olarak bu satırlarım var ve oraya iyi çalışıyor ancak sorunum JSP'de değil, sunucu uygulamasında istisna olarak kullanılıyor. – kayahr

2

yerine setStatus(500) olarak direktifini set - bazı farklılıklar vardır. Eğer web.xml config istemiyorsanız web.xml config Ancak sendError ile çalışıyor, sayfa yönergesi gelen error-page HTTP hata kodları için, benim için istisnalar için sadece çalıştı. Web.xml hata sayfalık tanımları JSP'lerin için çalışmaz: Ben yazdığım gibi