# Variable = null



## Dit (30. Jan 2007)

Hallo,

ich habe eine Web Anwendung nach dem MVC Modell aufgebaut.. (View und Controller strikt getrennt)

In der ersten JSP Seite, wählt der Benutzer einen "Namen" aus. Diesen Namen les ich wie gewohnt im Servlet aus

```
String name = request.getParameter ("name");
System.out.println ("name --> " + name);
```

Ausgabe:


```
Frank
```

danach geb ich die Variable weiter an einen "setter" eines anderen Servlets:


```
DispatchServlet dispatchServlet = new DispatchServlet();
 dispatchServlet.setNames(name);
```

und auch in dem Getter und Setter lass ich mir jeweils die Parameter ausgeben (noch vorhanden)

ABER:

nun möchte ich den Namen auf einer anderen JSP Seite anzeigen und schreibe daher in der JSP:


```
<%@ page import="servlets.DispatchServlet"%>
DispatchServlet dispatchServlet = new DispatchServlet();

<label  for="name"><%=dispatchServlet.getNames()%></label>
```
Habe auch schon folgendes getan:


```
<%@ page import="servlets.DispatchServlet"%>
DispatchServlet dispatchServlet = new DispatchServlet();
String Name = dispatchServlet.getNames();

<label  for="name"><%=Name%></label>
```

in beiden Fällen ist die Variable Name = null! ???:L  ich kann mir das nicht anders erklären, außer der Arbeitsweise zwischen Servlets und JSP Dateien.

Irgendjemand eine Vermutung / Idee..?
Danke


----------



## SlaterB (30. Jan 2007)

> DispatchServlet dispatchServlet = new DispatchServlet();
ein leeres objekt
> dispatchServlet.setNames(name);
ein Objekt mit einem Namen drin


----------
> DispatchServlet dispatchServlet = new DispatchServlet();
ein leeres Objekt
> String Name = dispatchServlet.getNames(); 
das Objekt ist leer, also Name == null

wo ist die Frage??
in der JSP wird doch nirgendwo der Name gesetzt, wieso sollte der Name in dem neu erstellten Objekt drin sein?


----------



## Dit (30. Jan 2007)

mmhh da sagst du was  :shock: 

sind ja 2 verschiedene Objekte.. naja dann ist das wohl klar!
bin nur gerade am überlegen wie ich denn dann die Variable setzen kann.
(hatte die immer schön weiter gereicht, aber genau das wollte ich nicht mehr tun!)  :noe:


----------



## KSG9|sebastian (30. Jan 2007)

Wie schon geschrieben: Das Servlet das du über new .. erzeugst ist nur lokal vorhanden. Die Servlets werden über den Tomcat gemanaget. Wenn du Daten an ein anderes Servlet weitergeben willst kannst du sie entweder in den request oder in die session legen


```
request.setAttribute("blah", "blub");

oder

request.getSession(true).setAttribute("blah", "blub");
```


----------



## Dit (30. Jan 2007)

hatten gerade nen längeres Gespräch! ist klar warum das nicht klappt 

Aber eine Frage habe ich noch.

Wie ist das mit Servlets:

wenn ich beispielsweiße 20 User habe... die auf ein Servlet zugreifen (sich alle auf einmal einloggen wollen)

A) hat jeder ein Servlet 
B) greifen alle auf das selbe zu?
C) was ganz anderes ^^


----------



## Ralf Ueberfuhr (1. Feb 2007)

B) Es gibt nur eine Servlet-Instanz, nur die Service-Methoden (doGet, doPost usw.) werden multithreaded abgearbeitet. Also keine Daten in die Servlet-Instanz legen, dafür gibt es die jeweiligen Scopes.


----------

