# Problem bei Session-Timeout



## Taste (16. Mai 2008)

Und weils so schön war hab ich hier gleich noch ein Problem, an welchem ich mir die Zähne ausbeiße...   

Ich betreibe meine JSF-Anwendung in einem Tomcat 5.5. Meine index.html leitet direkt auf diese Login-Seite weiter, und im Fall das ein Fehler passiert (Session abgelaufen) geschieht auch ein automatischer Redirect auf diese Seite.


```
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://facestrace.sourceforge.net" prefix="ft"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Cp1252" />
<link href="styles.css" rel="stylesheet" type="text/css" />
<f:loadBundle basename="messages" var="msgs" />
<title>ABC</title>
</head>

<body>
<f:view>
	<h:form>
		<h:panelGrid columns="1" styleClass="loginPage"
			rowClasses="navigationRow">
			<f:facet name="header">
				<f:subview id="state">
					<jsp:include page="stateArea.jsp" />
				</f:subview>
			</f:facet>

			<h:outputText id="a01" styleClass="label" value="" />
			<h:outputText id="a02" styleClass="label" value="" />
			<h:outputText id="a03" styleClass="label" value="" />

			<h:panelGrid columns="1" styleClass="loginGrid">

				<h:panelGrid columns="2" styleClass="whole"
					columnClasses="rightAligned, leftAligned" rowClasses="standardRow">
					<h:outputText styleClass="loginLabel"
						value="#{msgs.loginPage_username}" />
					<h:selectOneMenu
						value="#{loginManager.userID}"
						styleClass="loginMenuLabel"
						onchange="submit()" >
						<f:selectItems value="#{loginManager.userRoleItems}" />
					</h:selectOneMenu>
					<h:outputText styleClass="loginLabel" value=" "/> 
					<h:outputText styleClass="loginLabel" value=" "/> 
				</h:panelGrid>
				<h:outputText value=" " />
				<h:commandButton styleClass="button"
					value="#{msgs.loginPage_loginButton}" action="#{loginManager.loginAction1}" />
				</h:panelGrid>
		</h:panelGrid>
	</h:form>
<ft:trace />
</f:view>
</body>

</html>
```

Hier habe ich nun ein SelectOneMenu, in welchem der Anwender einen Benutzer auswählt um dann auf OK zu klicken und sich anzumelden.

Mein Problem:
Wird die Seite regulär geladen, dann funktioniert alles wie gewünscht. Ist jedoch zwischenzeitlich die Session abgelaufen, dann wird die Seite zwar angezeigt, aber bei auswählen eines Users bzw. klicken des Login-Buttons wird die Seite nur neu geladen, wobei die entwaige Auswahl eines anderen Users als dem in der Liste obenstehenden verworfen wird...

Ich stelle mir irgendwie vor, dass die Seite auch im Fall eines vorherigen Sessiontimeouts so geladen werden müsste, als wäre es ein "normaler" Aufruf, also sofort neue Session anlegen, nicht erst nach der ersten Aktion. Ist das richtig? Wie tue ich das?

Gruß Taste


----------



## Gast (16. Mai 2008)

Probier mal das hier:

http://www.java-forum.org/de/topic69063_daten-ablaufenden-sessions-speichern.html


----------



## Taste (16. Mai 2008)

Hmmmm, ja das klingt auch interessant, aber sehe ich gerade nicht wie mir das weiterhelfen sollte. Ich will ja keine Daten speichern.

Das die Session abläuft ist ja völlig ok und gewollt. Nur soll dann die Loginseite nicht (so wie es jetzt aussieht) erst aus dem Browsercache oder ähnlichem geladen werden, sondern einfach direkt eine neue Session erzeugt werden...


----------



## Gast (16. Mai 2008)

Eine Session wird immer direkt beim Aufruf der Seite erstellt falls noch keine existieren sollte. 

Du könntest auch alle Anfragen über ein Servlet leiten und dort dann immer mit Session#isNew() prüfen ob eine neue Session angelegt wurde. Ob das auch direkt im JSP geht weiß ich nicht. JSPs sind nicht so meine Baustelle. 

Eine solche Prüfung gehört aber so oder so nicht in den View sondern in einen Controller (also Servlet).

Wenn das nicht hilft weiß ich aber auch nix mehr. Bin noch relativ neu in Web-Programmierung.


----------

