Zum Inhalt springen

Wofür braucht man Servlets? JSP vs. Servlets?


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich komme aus der PHP-Welt und möchte jetzt für mich einige Sachen zu JSP/Servlets klären. Wafür braucht man eingentlich die Servlets? JSP funktioniert ähnlich wie php. Mit JSP kann man alles so gut realisieren wie mit Servlets (oder stimmt es nicht?)

Ein Beispiel-Servlet sieht so aus:

public class HelloWorldExample extends HttpServlet {


    private static final long serialVersionUID = 1L;


    @Override

    public void doGet(HttpServletRequest request,

                      HttpServletResponse response)

        throws IOException, ServletException

    {

        ResourceBundle rb =

            ResourceBundle.getBundle("LocalStrings",request.getLocale());

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();


        out.println("<html>");

        out.println("<head>");


        String title = rb.getString("helloworld.title");


        out.println("<title>" + title + "</title>");

        out.println("</head>");

        out.println("<body bgcolor=\"white\">");


        // note that all links are created to be relative. this

        // ensures that we can move the web application that this

        // servlet belongs to to a different place in the url

        // tree and not have any harmful side effects.


        // XXX

        // making these absolute till we work out the

        // addition of a PathInfo issue


        out.println("<a href=\"../helloworld.html\">");

        out.println("<img src=\"../images/code.gif\" height=24 " +

                    "width=24 align=right border=0 alt=\"view code\"></a>");

        out.println("<a href=\"../index.html\">");

        out.println("<img src=\"../images/return.gif\" height=24 " +

                    "width=24 align=right border=0 alt=\"return\"></a>");

        out.println("<h1>" + title + "</h1>");

        out.println("</body>");

        out.println("</html>");

    }

}

aber mit JSP kann man es dasselbe mit weniger Schreiberei machen.

Danke für die Erklärung.

Geschrieben (bearbeitet)

Im Grunde sind Servlets nicht anderes als Klassen, welche dir verschiedene Methoden bereitstellen, welche dir bei der Webprogrammierung hilfreich sind.

Im direkten Vergleich wäre ein Beispiel, dass du in PHP zum Beispiel einen Header-Aufruf so machen kannst:


header("Location: http://www.google.de");

In Java hast du stattdessen einen Parameter namens "response" mit der Methode "sendRedirect". Diese hast du aber nur, wenn du deine Klasse von einem Servlet ableitest/vererbst.

response.sendRedirect("http://www.google.de");

Warum du das so machen musst und nicht wie bei PHP einfach einen (globalen) Befehl aufrufst, lernst du, indem du dich mit der Objektorientierung auseinander setzt. Also würde ich dir empfehlen, erst einmal Java zu lernen und dann Servlets (in dem Fall ist eine "Webseite in Java gemeint") zu schreiben. Man kann in Java nicht mehr so viel "frickeln" wie in PHP. Und selbst wenn du später bei PHP bleibst, hilft dir das Knowhow aus Java, besseren PHP-Code zu schreiben.

Bearbeitet von pr0gg3r
Geschrieben (bearbeitet)

ein Redirect kann auch ohne Servlet gemacht werden.

In JSP kannst du folgendes schreiben:


   String site = new String("http://www.photofuntoos.com");

   response.setStatus(response.SC_MOVED_TEMPORARILY);

   response.setHeader("Location", site);

Also response ist auch hier zugänglich. Und das ist im Prinzip ähnlich wie in php. Du rufst bestimmte Methoden auf, mir derer Hilfe die Weiterleitung gemacht wird.

Bearbeitet von vinslave
Geschrieben

Ich versuche das dann nochmal zu erklären. Man kann JSP-Code schreiben, der dann unter einem Server (Glassfish, Tomcat, ...) ausgeführt wird, wie auch PHP unter Apache oder FastCGI. Da hat vinslave vollkommen recht, dass man auch dort auf Methoden zugriff hat. Servlets dagegen bieten dir eine gewisse "Umgebung" in Form von Klassen., die dich bei der objektorientierten Entwicklung von Webapplikationen helfen. Um dein Beispiel aufzugreifen:


public class HelloWorldExample extends HttpServlet {


    private static final long serialVersionUID = 1L;


    @Override

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException

    {

      ...

    }

}

Hier hast du die Klasse "HelloWorldExample", die von der Klasse "HttpServlet" abgeleitet wird. Diese Klase hat die Methode "doGet", die immer bei einem Seitenaufruf aufgerufen wird. Diese überschreibst du ja auch. Alles da drin passiert immer beim Aufruf. Zusätzlich hat das Servlet aber ganz ganz ganz viele Methoden mehr, die du zB überschreiben kannst oder für deine Anwendung nutzen kannst. So kannst du zum Beispiel auf Cookies zugreifen, Einstellungen vornehmen und ganz viel mehr. Vergleichbar wäre das zum Beispiel eher mit einem Framework. Der Vorteil gegenüber zu JSP ist, dass du den gesamten Sprachumfang von Java nutzen kannst. So kannst du zB eigene Klassen ableiten/erstellen, Interfaces erzeugen, Listener verwenden und ganz viel mehr. Das gibt es in JSP nicht immer so, wie man es aus Java kennt. Darin liegt meiner Meinung nach der konkrete Vorteil von Servlets, das wird einem aber erst bewusst, wenn man aus der Java-Welt kommt. Wenn man aus der PHP-Welt kommt, mag das alles noch garkeinen Sinn machen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...