# Servlet in Tabellenzelle starten



## K-Man (8. Mai 2006)

Hallo zusammen.
Folgendes Problem.
Ich habe eine jsp-Seite dessen Layout durch eine Tabelle organisiert wird. Wenn ich nun einen Link anklicke, dann will ich, dass in einem anderen Teil der Tabelle ein Servlet gestartet wird. Wie kann ich das machen? Kann ich beim Link die Tabellenzelle als Ziel angeben? Wie kann ich das Servlet generell in einer jsp-Seite starten?


----------



## Leroy42 (8. Mai 2006)

K-Man hat gesagt.:
			
		

> dass in einem anderen Teil der Tabelle ein Servlet gestartet wird.


 :shock: Wie kann innerhalb einer Tabelle ein Servlet gestartet werden?  :shock: 
Ein Servlet ist ein Programm auf dem Server, daß eine HTML-Seite generiert und an den
Browser schickt.

Willst du denn eine ganze HTML-Seite in eine Tabellenzelle eines bestehenden
HTML-Dokuments einfügern?


----------



## K-Man (8. Mai 2006)

Es geht darum, dass ich ein MVC-Modell erstellen will.
Ich hab in einer Tabellenzelle ein Menü. Wenn ich auf einen Menüpunkt klicke, dann soll in einer anderen Zelle der Link zu dem Menü geöffnet werden.
Gedacht ist das so: Es wird ein Servlet geladen und das Servlet leitet die Anfrage an ein jsp weiter. Hat man in diesem jsp seine Daten eingegeben und auf submit geklickt, dann verarbeitet das Servlet die Anragen. Problem ist, dass erzeugen des Servlet mach ich über die web.xml. Ich geb als link als mapping an und die xml-Datei sagt dann, dass ein entsprechendes Servlet gestartet wird. Nur dieses Servlet soll halt nicht auf der ganzen Seite gezeigt werden (was ja funktioniert), sondern in der bestimmten Tabellenzelle.

Eine andere Möglichkeit wär, dass kein Servlet gestartet wird, sondern direkt die jsp-Seite und dieses die Anfrage an ein Servlet weiterleitet. Habs mal schon probiert:

```
<% String destination = "/screenSeqs.jsp"; %>
<li id="current">[url="/home"]<span>Home</span>[/url]
[*][url="/login"]<span>Login</span>[/url]
```

Später in der Datei kommt dann die Zelle mit der destination:

```
<td><jsp:include page="<%=destination %>" /></td>
```


Klappt aber nicht. Ist wahrscheinlich komplett falsch. Bin auf dem Gebiet neu und hab momentan keine Ahnung, wie ich das Problem anderweitig lösen sollte. Im ersten Codeabschnitt ist das Menü beschrieben. Deren Aussehen ist in einer css-Datei beschrieben. Funktioniert auch alles. Nur nicht das Öffnen der jsp bzw Servlets in einer bestimmten Tabellenzelle. Muss ich dann mit frames arbeiten?


----------



## LordSam (9. Mai 2006)

Hallo K-Man,

bei klassischen Web-Anwendungen wird immer die gesamte HTML Seite übertragen und muss danach komplett neu aufgebaut werden. In deinem Fall müsstest Du also den Request wieder an die JSP (bzw. erst an ein Servlet und dann wieder an die JSP) übermitteln, so wie Du es schon angedeutet hast.

Dein Code sieht auch soweit i.O. aus und sollte funktionieren - was genau klappt denn daran nicht?

Um dein ursprüngliches Ziel zu erreichen, nur ein Element in deiner HTML Seite zu aktualisieren, musst Du auf DHTML/JavaScript und AJAX zurückgreifen. Vom Prozess sieht das dann so aus, das du bei Click auf einen Link eine JavaScript funktion aufrufst, die einen request an das Servlet schickt und das Ergebniss dann in die Seite einfügt.

Dazu solltest Du mal nach XmlHttpRequest und element.outerHTML googeln. Es gibt auch Frameworks/Tools etc. die speziel auf diese Methodik ausgelegt sind, z.B. jWic (www.jwic.de).


----------



## K-Man (15. Mai 2006)

Danke für die Antwort und Sorry für die späte Antwort.
Ich hab es jetzt mit Frames gemacht, da geht es ohne Probleme. Da lasse ich einfach ein Servlet in einem Frame starten, welches die Anfrage an eine jsp-Seite weiterleitet. So gehts jetzt ohne Probleme...nochmals danke..


----------

