Bean übertragen von Servlet zu Servlet

Status
Nicht offen für weitere Antworten.

Tec

Mitglied
Ich habe ein Servlet in welchem eine Instanz eines Beans erzeugt wird. Das Bean wird in diesem Servlet auch schön mit SET-Methoden beladen. Nun möchte ich von diesem Servlet aus ein anderes Servlet aufrufen und dieses andere Servlet soll nun ebenfalls auf dieses erzeugte Bean zugreifen können um mit GET-Methoden die Informationen auslesen zu können. Wie stelle ich das am besten an? Hat jemand ein Stück Beispielscode zufällig rumliegen?

Servlet1 (mit erzeugter Bean-Instanz) -----ruft auf---->Servlet2 (will auf das Bean von Servlet 1 zugreifen)
 
Hab hier mal den Code vom Servlet1, sieht also so aus:

Code:
Servlet1:

public void doGet (.......
BeanClass myBean = new BeanClass();   // Beaninstanz
HttpSession session = request.getSession(true);
session.setAttribute("beanid", myBean);
RequestDispatcher disp = getServletContext().getRequestDispatcher("/webapp/servlet2");  // leite an Servlet weiter
disp.forward (request, response);

}

Nun möchte ich im Servlet2 Zugriff auf das Bean "myBean" haben. Wie komme ich dort nun (doGet, doPost ?) ran?
 
Code:
public void doPost(HttpservletRequest req, HttpServletResponse) throws ServletException, IOException
{
   BeanClass bean = (BeanClass)req.getAttribute("beanid");
}
 
So hab nun ein neues Problem. Mein schönes Bean wird wunderbar übertragen nur existieren die Daten da drinnen auch für andere Clients welche auf die Seite zugreifen. Statt ein neues leeres Bean zu erzeugen wenn ein anderer Client zugreift, nimmt er das erste erzeugte Bean. Woran liegts?
 
Du kannst die Bean auch an die Session binden:
Code:
public void doPost(HttpservletRequest req, HttpServletResponse) throws ServletException, IOException
{
   BeanClass bean = (BeanClass)req.getSession().getAttribute("beanid");
}
 
Danke schön für die Hilfe, ich habs nun mit folgendem Code in den Griff bekommen:

Code:
HttpSession session = request.getSession(true);
Bean myBean = (Bean) session.getAttribute("beanid");
if (myBean == null)
  myBean = new Bean();

session.setAttribute("beanid",myBean);

Somit können andere Clients nicht auf dieselben Daten zugreifen. Das war ein hauptproblem, ein Client erzeugt ein Bean und füllt dieses mit Daten, der andere Client greift auch auf die Seite zu und bekommt genau die Daten des Beans ab.
 
Somit können andere Clients nicht auf dieselben Daten zugreifen. Das war ein hauptproblem, ein Client erzeugt ein Bean und füllt dieses mit Daten, der andere Client greift auch auf die Seite zu und bekommt genau die Daten des Beans ab.
Was heisst "verschiedene Clients" in deiner Terminologie?

Wenn du die Bean an die Session bindest, dann dürfte genau das nicht der Fall sein!

Schon mal mit einem zweiten extra gestarteten Browserfenster oder von einem anderen Rechner aus getestet?

Stichwort: application Scope ( = ServletContext)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben