Prinzipieller Ablauf bei Servlets

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

- über den Webbrowser versucht sich ein Nutzer einzuloggen
- es wird ein http-Request an den Server abgesetzt
- über web.xml mappt der Server nun die URI des http-Requests auf das Servlet DSWebServlet

Nun zu meinen Fragen:

1.)
In welcher Reihenfolge werden die Methoden aufgerufen? Wird zuerst die doProcessMethode aufgerufen oder wird zuerst die service-Methode aufgerufen? Die doProcess-Methode ist mit einer actionPerformed-Methode beim ActionListener zu vergleichen.

2.)
Welchen Sinn macht denn überhaupt die Methode doProcess? Ich könnte doch eigentlich den ganzen Code der in doProcess ist einfach nach doGet oder doPost übertragen. Dann könnte ich das "implements DSListener" entfernen und hätte somit weniger Arbeit.

Code:
public class DSWebServlet extends HttpServlet implements DSListener
{
    public boolean doProcess(DSLoginEvent event) 
    {
      // die Methode enthält Code
    }
    
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
        // diese Methode enthält Code
    }

    // doPost und doGet sind nicht überschrieben ==> leere doPost und doGet der Superklasse relevant
}
 
M

maki

Gast
SRV.2.1 Request Handling Methods
The basic Servlet interface defines a service method for handling client requests.
This method is called for each request that the servlet container routes to an instance
of a servlet.....
 
G

Guest

Gast
Wäre dann folgende Erklärung korrekt?

-Benutzer versucht sich einzuloggen
-Client Request wird abgesetzt
-URI vom Request wird von web.xml auf Servlet gemappt
-im Servlet wird die Methode service aufgerufen, die eine Instanz des Servlets erzeugt
-nun existiert die Instanz des Servlets ==> die Methoden des Servlets können aufgerufen werden
- mit dem Client Request kam auch ein Event
- das Event, kann nun da eine Servletinstanz existiert entsprechend von doProcess behandelt werden
 
M

maki

Gast
-im Servlet wird die Methode service aufgerufen, die eine Instanz des Servlets erzeugt
-nun existiert die Instanz des Servlets ==> die Methoden des Servlets können aufgerufen werden
- mit dem Client Request kam auch ein Event
- das Event, kann nun da eine Servletinstanz existiert entsprechend von doProcess behandelt werden
Natürlich ist das nicht richtig, um nicht zu sagen vollkommener Quatsch ;) Weis auch ehrlich gesagt nicht wie du auf so etwas kommst... man könnte meinen, du hättest dich bisher gar nciht mit Servlets beschäftigt ;)

Von jedem Servlet gibt es (normalerweise) nur eine Instanz pro mapping, daraus folgt, dass Servlets Threadsicher sein müssen. Also darf ein Servlet keine beliebig veränderbaren Instanzvariablen haben.
Servlets werden beim Start der Webanwedung einmal instantiiert, fertig.

Events gibt's nicht in Servlets, hat nix damit zu tun.

Der Grund für ein doProcess ist einfach: Man will sowohl get als auch post requests gleich behandeln.
 
M

maki

Gast
Nicht falsch verstehen, aber es ist unnötig schwer, wenn man die Grundlagen nicht kennt ;)

Im "vorbeigehen" lernt man Servlets nicht, aber man muss sie ja nicht komplett verstehen, so kompliziert sind sie ja auch nicht, die Grundlagen helfen oft schon weiter.
 
G

Guest

Gast
Der Grund für ein doProcess ist einfach: Man will sowohl get als auch post requests gleich behandeln.

Würde man das nicht besser so umsetzen:

Code:
public class DSWebServlet extends HttpServlet
{
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    {
        doGet(request, response);
    }
   
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    {
        // Code für doGet und doPost
    }
}
 
M

maki

Gast
Beides ist möglich, es hat sich so eingebürgert doProcess zu verwenden, wenn sowohl doGet als auch doPost das selbe machen müssen.
 
G

Guest

Gast
Werden bei dem doProcess Ansatz nur doPost und doGet gleich behandet, oder werden alle Service-Methoden (doGet, doPost, doHead, doPut, doTrace, doOptions, doDelete) gleich behandelt?
 
M

maki

Gast
doProcess steht weder in der Spek noch sonstwo festgeschrieben, d.h. ob, wann und wo doProcess benutzt wird, sieht man nur am Quellcode.
 
G

Guest

Gast
Es muß also explizit z.B. in der Service Methode aufgerufen werden?
 
G

Guest

Gast
Die Situation ist folgende:

doGet und doPost sind nicht überschrieben worden, damit sind ja die leeren Methoden der Superklasse relevant. Die Methode doProcess ist im Servlet enthalten wird aber nirgendwo expliziet aufgerufen. Damit könnte ich diese Methode doch theoretisch löschen oder? Sie wird ja nicht aufgerufen und hat keine Funktion.
 
G

Guest

Gast
ne quatsch... das implements muß ich ja auch noch irgendwie berücksichtigen...
 
G

Guest

Gast
com.xerox.docushare.event

An application implements the doProcess() method, which is called when an event that is added via DSSession.addEventListener is called. An instance of an implementation of this interface is passed to addEventListener. Examples of events include property change, object deletion, changes to containership, changes to access rights, and more. See DSEventObj for details.

After the successful completion of a number of kinds of operations, the DocuShare server sends event notification to those applications that have registered an event listener, in order to receive notice of the given event. In this way, an application can track changes to the DocuShare repository.

An instance of DSListener can be used on any number of addEventListener calls. An instance of DSListener can be used on DSSession.addEventListener(com.xerox.docushare.event.DSListener, int) calls on DSSession instances that were obtained from different instances of DSServer.
 

Niki

Top Contributor
Warum implementiert das dein Servlet? Ich bezweifle dass du dein Servlet irgendwo als DSListener registrieren kannst, da ein Servlet vom Container instanziert wird.
 
G

Guest

Gast
Momentan weiß ich leider nicht wie der Aufruf von doProcess zustande kommt bzw. ob er überhaupt zustande kommt. Vielleicht kannst du mir ja einen Denkanstoß geben... wie würdest du rangehen und herauszufinden wie das funktioniert?
 
M

maki

Gast
1. Doku
2. Das Servlet genauer ansehen

Von was erbt denn das Servlet?
 
G

Guest

Gast
Code:
public class DSWebServlet extends HttpServlet
    implements DSService, DSListener, AmberCredentialMgr

Mit der Doku ist das so ne Sache. Ich hab die Quellen ja nicht... hab die *.class dekompiliert.
 
G

Guest

Gast
Soll ich das komplette Servlet mal Posten? Hat allerdings fast 4000 Locs
 
G

Guest

Gast
Warum implementiert das dein Servlet? Ich bezweifle dass du dein Servlet irgendwo als DSListener registrieren kannst, da ein Servlet vom Container instanziert wird.

Es ist ja nicht mein Servlet. Es ist ein Servlet von Xerox, dass ich dekompiliert habe. Der Sinn warum mein Servlet den DSListener implementiert ist mir auch nicht klar...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
M Feste Reihenfolge von dem Ablauf von Methoden Java Basics - Anfänger-Themen 7
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
E Allgemein Verständnissfrage zum Ablauf mehrerer Threads Java Basics - Anfänger-Themen 4
H Modifizierte ArrayList für weiteren Ablauf beibehalten? Java Basics - Anfänger-Themen 12
M Einfacher Fenster-Ablauf Java Basics - Anfänger-Themen 5
R Programm nach ablauf eines Timers beenden Java Basics - Anfänger-Themen 10
K Zeit ablaufen lassen und nach Ablauf beenden Java Basics - Anfänger-Themen 5
J Ablauf im Skript/ Applet Java Basics - Anfänger-Themen 4
A Ablauf von Bytecode Transformation Java Basics - Anfänger-Themen 10
M Frage zum Ablauf eines Threads Java Basics - Anfänger-Themen 5
W Eine Methode, mehrfacher gleichzeitger Ablauf möglich? Java Basics - Anfänger-Themen 2
L Ablauf abbrechen und zurück Java Basics - Anfänger-Themen 20
L JSP/Servlets VS JavaScript Java Basics - Anfänger-Themen 4
P Servlets und JDBC Java Basics - Anfänger-Themen 2
aokai Zwei Fragen zu Servlets / JSP Java Basics - Anfänger-Themen 3
L java.lang.NoClassDefFoundError / SIP-Servlets Java Basics - Anfänger-Themen 4
A Servlets: Mehrere Parameter übergeben Java Basics - Anfänger-Themen 2
A Tutorial Java Servlets Java Basics - Anfänger-Themen 3
C Servlets: doPost() etc. anstatt service() Java Basics - Anfänger-Themen 4
G Servlets: Erwartete/Angelegte Pfade von Tomcat/Eclipse Java Basics - Anfänger-Themen 2
L [Web/Servlets] welches Framework verwenden? Java Basics - Anfänger-Themen 10
M Servlets und Observer Java Basics - Anfänger-Themen 2
F config.xml innerhalb eines Servlets laden Java Basics - Anfänger-Themen 4
L Kompilieren von Servlets Java Basics - Anfänger-Themen 3
P Gibt es Probleme mit Runtime Objekten in Servlets? Java Basics - Anfänger-Themen 3
P php -> Java Servlets . Bilder Java Basics - Anfänger-Themen 3
G Problem - mehrere Servlets einbinden Java Basics - Anfänger-Themen 6
F Servlets, Formulare und ich weiß keine Lösung Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben