2016-06-20 10 views
0

Ich denke darüber nach, wie ein Haupt-Servlet zu erstellen, dass der Rest der Servlets davon erstreckt. Ich habe einige Eigenschaften, die ich gerne für die ganzen Servlets in meiner App zugänglich machen möchte, und ich möchte sie initalisieren. Ich denke, es ist so etwas wie dies sein könnte:Servlets, init und extends

public abstract class MainServlet extends HttpServlet { 

    protected String errorURL = null; 
    protected String adminMenuURL = null; 
    protected String AdminLoginServlet = null; 
    protected String ValidateServlet = null; 

    // here, more properties and methods... 

    @Override 
    public void init() { 
     errorURL = context.getInitParameter("errorURL"); 
     adminMenuURL = context.getInitParameter("adminMenuURL"); 
     AdminLoginServlet = context.getInitParameter("AdminLoginServlet"); 
     ValidateServlet = context.getInitParameter("ValidatePicsServlet"); 
     // here, some more inits... 
    } 
} 

Wenn ich eine neue Servlet wie folgt ...

public class AdminLoginServlet extends MainServlet { 

} 
  1. Wenn ich mich auf AdminLoginServlet, würde die Parameter (errorURL, adminMenuURL usw.) wieder zugewiesen werden?
  2. Wenn ich die init-Methode in AdminLoginServlet (und andere Servlets, die von MainServlet erweitert) überschreiben ... diese Eigenschaften werden nicht nie zugewiesen, oder?
  3. Wie würdest du tun, was ich vortue zu tun?

Danke.

Antwort

0
  1. die Mitglieder adminMenuUrl usw. zugewiesen werden, wenn das Servlet zuerst durch den Motor erzeugt wird, denn dies ist der Moment, wenn init() aufgerufen wird. Jede Benutzeranforderung wird von derselben Servlet-Instanz in verschiedenen Threads behandelt. Wenn Sie eine Anforderung an ein Servlet weiterleiten, wird die Methode init() nicht aufgerufen.
  2. du hast recht, weil es
  3. keine Instanz von MainServlet sein kann ich nicht sicher bin, wie Sie Ihre Web-App wie

Sie sollten die Felder AdminLoginServlet und ValidateServlet umbenennen aussehen sollte, weil es schlechte Praxis ist um Feldnamen mit Großbuchstaben zu beginnen.

+0

Danke für Ihre Antwort! Es war sehr nützlich für mich. Grüße – Ommadawn