olek07 Geschrieben 25. September 2013 Geschrieben 25. September 2013 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. Zitieren
uenetz Geschrieben 25. September 2013 Geschrieben 25. September 2013 Hier ist ein guter Beitrag, der die Verwendung von Servlet's grundsätzlich erklärt. Zitieren
Gooose Geschrieben 25. September 2013 Geschrieben 25. September 2013 Hier eine kleine Übersicht: What is the difference between JSF, Servlet and JSP? Zitieren
pr0gg3r Geschrieben 25. September 2013 Geschrieben 25. September 2013 (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 25. September 2013 von pr0gg3r Zitieren
olek07 Geschrieben 26. September 2013 Autor Geschrieben 26. September 2013 (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 26. September 2013 von vinslave Zitieren
uenetz Geschrieben 26. September 2013 Geschrieben 26. September 2013 Man kann auch Cola ohne Strohhalm trinken Zitieren
olek07 Geschrieben 26. September 2013 Autor Geschrieben 26. September 2013 ist schon ok. Aber zeigt das obere Beispiel von pr0gg3r eine typische Anwendung von Servlets? Oder wo ist hier der Vorteil. Zitieren
uenetz Geschrieben 26. September 2013 Geschrieben 26. September 2013 Du wirst wohl nicht erwarten, dass man Dir Beispiele präsentiert, die Dich überzeugen. Was Du als Servlet entwickelst, liegt wohl in Deinem Ermessen. Zitieren
pr0gg3r Geschrieben 26. September 2013 Geschrieben 26. September 2013 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. Zitieren
Empfohlene Beiträge
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.