# Session Attribute an Klasse übergeben



## Pasche (31. Aug 2005)

In meiner Webanwendung kann man sich als User einloggen. Direkt nach dem Login wird die User-ID in einer Session-Variablen gespeichert, da ich sich an verschiendenen Stellen brauche.

Jetzt brauche ich sie unter anderem auch in einer Action Klasse. Meine Frage ist jetzt, wie ich in der Action Klasse an die Session Variable komme?


----------



## clemson (31. Aug 2005)

mittels 
	
	
	
	





```
request.getSession().getAttribute("name_der_session_variable")
```


----------



## Pasche (31. Aug 2005)

Muss ich dafür noch irgendwas importieren? Bekomme so nämlich einen "cannot resolve symbol request" fehler.


----------



## clemson (31. Aug 2005)

wo - in welcher klasse - möchtest du auf die session-variable zugreifen??


----------



## Pasche (31. Aug 2005)

Zuerst werden über eine Form Klasse die Eingabefelder der JSP abgefragt, dann erfolgt eine Weiterleitung zur Action Klasse. Und in dieser möchte ich auf eine Session-Variable zugreifen.


----------



## clemson (31. Aug 2005)

du verwendest also struts - nehme ich an...

dann wird in der Action-Klasse die methode execute aufgerufen, und diese execute methode hat wiederum die 4 parameter request, response, mapping und form.

willst du nun innerhalb dieser execute methode auf die session variable zugreifen, so erfolgt dieses mittels:


```
public ActionForward executeAction(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

       Object var = request.getSession().getAttribute("name_der_session_variable");
       String s = (String) var;
       ...

}
```


----------



## Pasche (31. Aug 2005)

Mit Struts liegst du richtig. Und dass ich das Ganze in der execute verwenden will, stimmt auch. jedoch kann ich es immer noch nicht kompilieren, da das "request" offensichtlich nicht bekannt ist.


```
D:\tomcat\webapps\CMS\WEB-INF\classes>javac -classpath .;servlet.jar;../lib/struts.jar navigation/*.java

navigation/NavigationAction.java:74: cannot resolve symbol
symbol  : variable request
location: class navigation.NavigationAction
         Object var                                      = request.getSession().getAttribute("benutzer_id");
                                                           ^
1 error
```


----------



## clemson (31. Aug 2005)

hmm, wie lautet denn die signatur deiner execute methode??


----------



## Pasche (31. Aug 2005)

```
package navigation;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.sql.*;
import tools.*;
import java.util.*;
import java.text.*;

public ActionForward execute(ActionMapping mapping,
	    ActionForm form, HttpServletRequest req,
		 HttpServletResponse res) throws Exception 
    {



          return mapping.findForward("navigationCreated");
    }
```


----------



## clemson (31. Aug 2005)

dann muss es lauten:


```
req.getSession().getAttribute("benutzer_id");
```


----------



## Pasche (31. Aug 2005)

Da sagst du auch was   

Funktioniert jetzt soweit. 

Aber noch ne Zusatzfrage:
Wenn ich die Variable jetzt nicht in einer Action Klasse, sondern in einer davon unabhängigen Klasse aufrufen möchte, wie mache ich das dann? Dementsprechend wird ja "HttpServletRequest req" gar nicht übergeben.


----------



## clemson (31. Aug 2005)

hmm, du musst dieser methode aber den request über geben...

denn sonst kannst du - soweit ich weiß - nicht auf die session, respektive auf session-variablen zugreifen...


----------



## Pasche (31. Aug 2005)

ok, bleibt mir bei den klassen noch die möglichkeit, die Variable direkt mit zu übergeben.

An dieser Stelle nochmals  danke. Hast mich ein ganzes Stück weiter gebracht.


----------



## KSG9|sebastian (1. Sep 2005)

den ganzen request an ne andere klasse zu übergeben ist net sonderlich schön  lies lieber die benötigten attribute aus und übergib die


----------

