Announcement

Collapse
No announcement yet.

IsPostBack in JSP?

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

  • IsPostBack in JSP?

    Hallo!

    Ich komme aus der C#-Ecke und meine Erfahrungen bzgl. Webprogrammierung beschraenken sich v.a. auf ASP.NET! Nun muss ich allerdings in JSP proggen und hab da folgende Frage:

    Gibt es in JSP sowas wie IsPostBack bzw. gibt es Beispiele wo das selbst implementiert wurde??

    Danke, Bav!

  • #2
    Hallo!

    Das hängt jetzt davon ab, ob Du dogmatisch programmierst oder nicht.

    Laut Dogma sieht es so aus, dass JSPs nur für die Präsentation zuständig sind. Die Verarbeitung von Eingaben (also auch die Prüfung, ob es sich um ein Postback handelt, oder nicht) findet dann <i>immer</i> in einem Servlet statt, das dann natürlich automatisch weiß, dass es sich um ein POST-"Ereignis" handelt. Wenn Dich diese Form des Programmierens interessiert, schau Dir doch mal das Web-Framework Struts an...

    Wenn Du aber "nur" (im Sinne von ausschließlich) mit JSPs arbeiten und auch Verarbeitungslogik in der JSP selbst haben willst, so kannst Du vielleicht über das <i>request</i> Objekt prüfen, ob im aktuellen Request Parameter enthalten sind - das sollte eigentlich wie IsPostBack() funktionieren, denn ohne Anfrage gibt es ja auch keine Anfrageparameter...

    Ich hoffe das hilft,

    Jör

    Comment


    • #3
      Wenn man wirklich ein Äquivalent zu IsPostBack sucht, kann man auch z.b.

      <PRE>
      <% if(request.getMethod().equals("POST"))
      {
      //do something
      }
      %>
      </PRE>

      machen. Ob das so schön ist, sei dahingestellt :-) Natürlich hat Jörg vollkommen recht, solche Verarbeitungen und Initialisierungen lagert man idealerweise in Java (Servlet, Action, Filter, Listener) aus.

      Gruß,

      Alwi

      Comment


      • #4
        Hallo...

        ... und danke für die schnelle Antwort!

        Na dann halte ich mich wohl an das Dogma! Allerdings wollte ich ein und dasselbe Servlet zur Initalisierung - z.B. Default-Werte, Items in DropdownList - und zur Verarbeitung - also z.B. zur Prüfung und ggf. Sicherung in ner DB - verwenden. Hierzu wäre eben ein Flag, vergleichbar mit IsPostback, von Vorteil?<BR>
        Ist es in der JSP-Welt üblich, für alles ein eigenes Servlet zu schreiben? Dann grenzt meine Idee natürlich an Stilbruch...

        Danke, Ba

        Comment


        • #5
          Ein richtiges Dogma ist es eigentlich nicht, es kommt auf die Komplexität der Anwendung an. Bei kleineren Anwendungen kann man auch mal alles in die JSPs schreiben. Irgendwann sind diese dann halt nicht mehr wartbar. Das ist im Prinzip auch keine Frage JSP vs. ASP sondern Model1 vs. Model2, also eine Frage der Architektur ( http://www.javaworld.com/javaworld/jw-12-1999/jw-12-ssj-jspmvc.html )

          In der JSP-Welt hat man eigentlich typischerweise nur wenige Servlets (abgesehen davon, das JSPs eigentlich auch Servlets sind). Sehr oft hat man nur eins, welches dann auf command-Klassen (in Struts heißen sie Actions) und JSPs weiterleitet. Struts hat auch genau ein Servlet (das ActionServlet, im Pattern-Jargon auch FrontController genannt).

          Zur Frage mit den Initialisierungen: Jedes Servlet hat eine init-Methode, dort kann man Initialisierungscode unterbringen. Diese Methode wird üblicherweise einmal aufgerufen, sie kann aber mehrmals aufgerufen werden, wenn man dasselbe Servlet mehrfach deployt.

          Speziell für Initialisierungen gibt es sogenannte listener, die genau dann einmal aufgerufen werden, wenn die Anwendung gestartet wird (ServletContextListener), wenn eine neue session erzeugt wird (HttpSessionListener) oder wenn ein neuer request erzeugt wird (ServletRequestListener ab J2EE 1.4). Nähere Infos siehe z.b. http://www.informit.com/articles/article.asp?p=31669&seqNum=3

          Außerdem kann man natürlich in der Anwendung lazy (also bei der ersten Benutzung) eine Initialisierung vornehmen und dann selbst ein Flag in die session schreiben (oder den ServletContext oder den request, je nachdem, wie oft initialisiert werden soll), wenn die Initialisierung vorgenommen wurde.

          Gruß,

          Alwi

          Comment


          • #6
            Hallo!

            Na das ist ja nun wirklich mehr als ausfuehrlich... dadurch angesport habe ich mich nun doch ein bisschen intensiver mit der Technologie befasst und finde es inzwischen wirklich gut! Und vor allem ist das firmeninterne Framework - strikt nach Modell 2 - nun durchaus verstaendlich...
            <BR><BR>
            Vielen Dank fuer die konstruktiven Beitraege, Ba

            Comment

            Working...
            X