# Tomcat:Error Pages werden nicht angezeigt



## aze (7. Okt 2011)

Hi

Ich mache gerade meine ersten Gehversuche mit JSP und Tomcat.

Ich habe gerade einen ServletFilter geschrieben, der für jeden Request auf einen Unterbereich "user" prüfen soll ob der Benutzer angemeldet ist und wenn nicht einen statuscode 401 zurückgibt.Das funktioniert auch soweit.Ebenfalls habe ich eine Errorpage 401.jsp erzeugt die auf eine 401 Fehlermeldung reagiert.Diese funktioniert leider nicht.

Hier der Deployment Deskriptor:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>S2DashboardDesktopBackEnd</display-name>
	<filter>
   		<filter-name>UserFilter</filter-name>
   		<filter-class>filters.UserFilter</filter-class>
    <init-param>
      	<param-name>log_category</param-name>
      	<param-value>DurationLog</param-value>
    </init-param>
    </filter>
	<filter-mapping>
    <filter-name>UserFilter</filter-name>
   		<url-pattern>/user/*</url-pattern>
	</filter-mapping>
	<error-page>
        <error-code>401</error-code>
        <location>/errorPages/401.jsp</location>
    </error-page>
</web-app>
[/XML]

Hier der Filter:


```
package filters;


import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;



public class UserFilter implements Filter {

	
   public void init(FilterConfig config) throws ServletException {
	   

   }
   public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
	   HttpServletRequest httpRequest = (HttpServletRequest) request;
  	   HttpServletResponse httpResponse = ((HttpServletResponse) response);
	   HttpSession currentSession = httpRequest.getSession();
	   if(currentSession.getAttribute("username") == null || currentSession.getAttribute("password") == null){ 
	   		httpResponse.setStatus(401);
	   		}
	   		else{
	   			chain.doFilter(httpRequest, httpResponse);
	   		}
	   	
	   }
   	  


   public void destroy() {
   }
}
```


----------



## sence (12. Okt 2011)

alternative: mach direkt eine Weiterleitung auf die Fehlerseite.

Meine Empfehlung:
Wenn du gerade Webentwickelung am lernen bist, schaue dir mal z.B. JSF2 an.
Du wirst viele Sachen schneller erreichen können und übersichtlicher definieren.
Ebenfalls hast du dort mehr Möglichkeiten, wie z.B. Erweiterungen einbinden (Primefaces, Icefaces usw).


----------



## aze (12. Okt 2011)

Joa,habe ich jetzt auch so gemacht. wäre allerdings trotzdem cool zu wissen warum das so nicht funktioniert.

Mit was ich mich nach Jsp beschäftige weiß ich noch nicht.Vlt JSF,vlt Struts oder Wicket.


----------



## sence (12. Okt 2011)

versuche mal statt setStatus(401);
setError(401);

setStatus beendet nicht den Ablauf, nur setError


JSP-Tutorial - Fehler- und Ausnahmebehandlung


----------



## aze (12. Okt 2011)

Hey cool.Das klappt.Danke !


----------

