Announcement

Collapse
No announcement yet.

Servlet -> JSP

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Servlet -> JSP

    Hallo,
    ich habe einen Servlet. Der Servlet initialisiert einen Objekt (Device[]) in seine init()-Methode:


    Servlet: Simulator.java
    Code:
     public class Simulator extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    
    	 public Device[] devices;
    	 public DeviceManager deviceManager;
    	 
    
    	public void init(ServletConfig config) throws ServletException {
    		super.init();
    		
    		deviceManager = new DeviceManager();
    		devices = new Device[4];
    		
    		for(int i=0; i<devices.length; i++){
    			
    			devices[i] = new Device();
    			
    			devices[i].setID("1");
    			devices[i].setName("dummy");
    			devices[i].setInfo("Test");
    		}
    		
    	}
    
    	public Device[] getDevises(){
    		return this.devices;
    	}
    }
    Also das heißt das wenn der Tomcat gestartet wird ist der Objekt Device[] gefühlt.

    Wie kann man aus eine JSP-Seite auf der Initialisirte Objekt zugreifen ???

  • #2
    Hallo Don,

    @nicht wenn der Tomcat gestartet wird wird das Objekt befüllt sonder erst nach dem 1. Zugrif (oder ich müßt mich jetzt wirklich irren). Um immer auf ein initialiesertes Objekt zugreifen zu können, kann man aber die Reihenfolge der Initialisierung der Servlets mit dem init Parameter in der web.xml setzten. Weiters würde ich das Objekt in einem Container speichern welcher über die komplette Anwendung sichtbar ist.

    Ich würde in der init mit config.getServletContext().setAttribute("devices", devices); machen.

    Ich bin zwar kein JSP spez. aber es gibt sicher ein vordefinierte Obj. im JSP mit dem man auf den ServletContext zugreifen kann.

    Weiteres sollte dann kein Problem mehr sein.

    lg Dietmar

    Comment


    • #3
      In jedem Fall solltes Du das Servlet über die web.xml in der servlet-config mittels

      Code:
      <servlet>
      <servlet-name>deinServletName</servlet-name>
      <servlet-class>dein.package.Simulator</servlet-class>
      <load-on-startup>1</load-on-startup>
      </servlet>
      beim Laden deployen der Webapplikation automatisch initialisieren. Sonst ist das, was Du über die init-Methode des Servlets im Servlet-Context publizieren willst erst verfügbar, nachdem der erste Zugriff auf des Servlet erfolgt ist (was recht misslich ist, wenn die geplante JSP-Seite vor dem Servlet aufgerufen wird).

      Du kannst als Parameter für load-on-startup jeden beliebigen Wert > 0 angeben; bei mehreren Servlets wird so die Reihenfolge des Startens konfiguriert.

      Gruß
      Hendrik

      Comment

      Working...
      X