# session attribut in servlets und jsps



## rambozola (7. Apr 2008)

hallo,

ich bin neuling im jsp- und servlet-umfeld.

ich habe eine behelfsjavaklasse angelegt, die diverse attribute enthält die für meine webanwendung wichtig sind.
ich würde gerne ein objekt dieser behelfsklasse in der session halten und durch userinteraktion die attribute abändern.

nun meine fragen:

1.: wie kann ich in meiner start-jsp diese behelfsklasse initialisieren und in der session ablegen?
     wie ist der genaue ablauf? muss ich ein servlet aus der jsp rufen was die behelfsklasse initialisiert und dann wieder     
     auf die jsp zurücknavigieren oder wie läuft das?

2.: wie erreiche ich es das diese behelfsklasse in der session in allen jsps und servlets der anwendung bekannt ist?

vielen dank und entschuldigt falls dau-fragen  :lol:


----------



## HLX (7. Apr 2008)

rambozola hat gesagt.:
			
		

> 1.: wie kann ich in meiner start-jsp diese behelfsklasse initialisieren und in der session ablegen?
> wie ist der genaue ablauf? muss ich ein servlet aus der jsp rufen was die behelfsklasse initialisiert und dann wieder
> auf die jsp zurücknavigieren oder wie läuft das?


Ruf anstatt der Start-JSP-Seite direkt ein Servlet auf. Initialisiere dort dein Behelfsobjekt und verweise dann auf die JSP-Seite.



			
				rambozola hat gesagt.:
			
		

> 2.: wie erreiche ich es das diese behelfsklasse in der session in allen jsps und servlets der anwendung bekannt ist?


Das ist automatisch der Fall. Über das Request-Objekt hast du immer Zugriff auf die Session.


----------



## rambozola (7. Apr 2008)

danke HLX

"Ruf anstatt der Start-JSP-Seite direkt ein Servlet auf. Initialisiere dort dein Behelfsobjekt und verweise dann auf die JSP-Seite. "

ja du hast recht die jsp sollte nur fürs ui zuständig sein...

"Das ist automatisch der Fall. Über das Request-Objekt hast du immer Zugriff auf die Session."

alles klaro dann leg ich mal los und melde mich wieder bei fragen  :### 

danke soweit...


----------



## rambozola (7. Apr 2008)

eine frage hab ich denn doch noch:

wie kann ich denn aus einer javascript function heraus das sessionattribut (behelfsklasse) aktualisieren?

muss ich da aus der javascript function ein entsprechendes servlet aufrufen und dort den sessionparameter setzen?

geht das mit "window.location.href=target;"  oder wie?
wie übergeb ich den zu ändernden wert aus der javascript function dann dem servlet?


----------



## maki (7. Apr 2008)

Am einfachsten ist es imho, wenn du ein sog. hidden input feld per JS mit dem Wert befüllst und dann das Formular submittest.


----------



## rambozola (7. Apr 2008)

danke maki für deine antwort...

"Am einfachsten ist es imho, wenn du ein sog. hidden input feld per JS mit dem Wert befüllst und dann das Formular submittest."

I´ll try  :wink:


----------



## rambozola (8. Apr 2008)

wie bekomme ich es denn hin das nach dem auswählen eines wertes in einer dropdown, verarbeitung im servlet und anschließender rückleitung vom servlet auf die jsp die zuvor ausgewählten werte zB einer dropdownlist in der jsp angezeigt werden und nicht deren initialwerte?

dies ist doch jetzt ein guter fall für ajax oder? wie ginge das mit der prototype.js?


----------



## maki (8. Apr 2008)

Brauchst nicht unbedingt AJAX.

Welche Taglibs verwendest du denn?


----------



## rambozola (8. Apr 2008)

hi maki

"Welche Taglibs verwendest du denn? "

keine.

hab aber die prototype.js in bestehendem code vorhanden...wär schon cool die zu nehmen...hab grad mal etwas prototype-einführung unter www.ajax-info.de/prototype-einfuhrung#dollar gelesen.

ich raff aber den ablauf noch nicht so wirklich...ich meine das prinzip von ajax ist ja nur den geänderten teil des dom-baumes der website anzupassen...


----------



## maki (8. Apr 2008)

Vergiss AJAX, vergiss alles was du gerade vorhast.

Verstehe und nutze Taglibs, vorher brauchst du imho gar nicht weiterzumachen, geht schief bzw. bestenfalls bekommst etwas grottenschlechtes, unleserliches und nicht wartbares.

JSTL sollte man zumindest verstehen und nutzen, Scriptlets sollten nicht verwendet werden, ausser für die allerersten Tests, welche schnell wieder gelöscht werden


----------



## rambozola (8. Apr 2008)

hi maki,

danke für deine antwort.

ich verstehe nicht ganz welches problem du gerade siehst?

prototype.js ist doch eine javascript ajax bibliothek und sollte für meinen fall prima geeignet sein?

"JSTL sollte man zumindest verstehen und nutzen, Scriptlets sollten nicht verwendet werden, ausser für die allerersten Tests, welche schnell wieder gelöscht werden " 
begründe mal bitte.

vielen dank!


----------



## maki (8. Apr 2008)

Scriptlets sind bääääh! 

JSPs sind auch so schwer genug, mit HTML Tags, CSS, JavaScript, etc. pp...

Da ist Java unnötige zusätzliche Komplexität, Java gehört in Servlets, genauso wie HTML, CSS, JavaScript in JSPs gehört.

Der sinnvollste Weg um Java aus JSPs zu halten sind Taglibs wie die JSTL und EL.

Kurz gesagt: Scriptlets sind Pfusch.

Bis zur JSTL und EL war es nicht immer möglich, Scriptlets komplett aus JSPs rauszuhalten, seit der JSTL ist das anders.


----------

