Tomcat: mit Filter zur LoginSeite

TimoTH

Mitglied
Hallo!
In meiner Webapplikation (Tomcat 5.5 mit JSF 1.2) möchte ich einen Filter nutzen, um zurück auf die Startseite zu leiten. In meinem Beispiel, wenn die Session ID = null ist.
Code:
package application.web.session;
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 SessionFilter implements Filter {
	
	protected FilterConfig filterConfig;
	
	
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

	public void destroy() {
		this.filterConfig = null;
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws java.io.IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse res = (HttpServletResponse) response;
		HttpSession session = req.getSession(false);
		if(session== null){
			if(req.getRequestURI().contains("login.jsf")){
				System.out.println("Alles Okay");
			}
			else{
				System.out.println("Session ID ist null!");
filterConfig.getServletContext().getRequestDispatcher("/timeout.xhtml").forward(request, response);
//filterConfig.getServletContext().getRequestDispatcher("/login.jsf").forward(request, response);
//filterConfig.getServletContext().getRequestDispatcher("/login.xhtml").forward(request, response);
	
				return;
		     }
				
			
		}
		chain.doFilter(request, response);
		
	}
}
Das Problem an der Sache ist, dass wenn ich direkt auf die login.jsf Seite zurückleite, diese nicht gerendert werden kann (Reines HTML wird dargestellt, die JSF Sachen nicht).
Wenn ich allerdings wie in dem Beispiel erst auf die Seite timeout.xhtml (reines HTML) leite und von dort einem Link auf die Loginseite folge, dann klappt es.

Wenn ich ganz normal über den Browser die Loginseite aufrufe oder halte über die Timeout Seite gehe, kann man im Log sehen, dass da Tag Bibliotheken nachgeladen werden:
14.08.2008 11:15:50 com.sun.faces.lifecycle.ELResolverInitPhaseListener populateFacesELResolverForJsp
INFO: JSF1027: [null] The ELResolvers for JSF were not registered with the JSP container.
14.08.2008 11:15:51 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/C:/Dokumente%20und%20Einstellungen/Administrator/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/TestApplication/WEB-INF/lib/jsf-facelets-1.1.12.jar!/META-INF/jsf-html.taglib.xml
14.08.2008 11:15:51 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
...
Diese Logeinträge fehlen allerdings, wenn ich mit dem Filter direkt auf die Loginseite leite.
Von daher denke ich also, dass hier das Problem zu finden ist.
Ich habe nur leider keine Idee, wie ich das anzupacken habe..
Jemand eine Idee?

Danke schonmal und *gruß*
Timo
 

Neue Beiträge

Zurück