Announcement

Collapse
No announcement yet.

Aufruf von Beans über JSP oder Servlet

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

  • Aufruf von Beans über JSP oder Servlet

    Moin zusammen,

    als Neueinsteiger in das Thema EJB eine Frage an die Spezies unter Euch... (Konnt auch in Google nichts dazu finden...)

    Ich habe ein EJB Beispiel in Eclipse umgesetzt, in dem die Methode aus dem Remote Interface über JSP und ein Servlet aufgerufen wird:

    JSP:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;
    charset=ISO-8859-1">
    <title>Beispielhafte Enterprise Webanwendung</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/sagHallo">
    <input type="text" name="name" />
    <input type="submit" value="Press me!" />
    </form>
    </body>
    </html>


    Das Servlet:

    package servlets;

    import java.io.IOException;
    import javax.ejb.EJB;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import ejb_modul.RemoteBusinessInterface;

    public class ejbServlet extends javax.servlet.http.HttpServlet implements
    javax.servlet.Servlet {
    static final long serialVersionUID = 1L;
    @EJB
    RemoteBusinessInterface remoteBusinessIntf;

    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    String name = request.getParameter("name");
    if (name == null || name.length() == 0) {
    name = "anonymous";
    }
    response.getWriter().write(remoteBusinessIntf.sayH ello(name));
    }
    }


    Also...

    über's doGet des Servlets wird die Methode "sayHello" des Remote aufgerufen. So weit so gut...

    Meine Frage als Neuling nun: Ist das nicht umständlich ? Kann man das nicht direkt aus dem JSP aufrufen ?
    Wenn ja, wie genau (kurzes Codebeispiel wenn möglich)

    Danke und Gruss, lagloose

  • #2
    Der Direktaufruf würde noch hässlicher werden, glaub' mir.

    Überlege mal, was du eigentlich "direkt von der JSP aufrufen" willst; du hast ja aktuell in deiner Eingabe-JSP eine Form drin, so dass du beim Submit ein HTTP-Request an deinen Server an die in dem Form-Tag hinterlegten URL sendest.

    Normalerweise hat du auf der Serverseite dann dein Servlet, dass den Request verarbeitet und eine Response erzeugt. Was willst du als Response haben? Im deinem Code ist das z.B. eine relativ rudimentäre Seite ohne grosse HTML-Formatierung.

    Was du aber machen kannst - und wahrscheinlich wolltest du das auch - nicht das Servlet, sondern wieder deine JSP aufrufen. Das geht; da die JSP vom Server ja in ein Servlet umgewandelt wird. Und du kannst ja jederzeit beliebigen Java-Code in eine JSP mittels <% ... %> einbauen.

    Aber 1. das macht macht nicht, 2. das macht man nicht und 3. Wird der Code in der JSP dann grausam unleserlich.

    Du hast dir mit deinem Beispiel dein erstes eigenes Web-Framework gebaut; jetzt ist der nächste Schritt zu Techniken wie JSF oder Struts ja nicht mehr so weit ;-)

    Comment


    • #3
      Originally posted by ramon98 View Post
      Der Direktaufruf würde noch hässlicher werden, glaub' mir.

      Überlege mal, was du eigentlich "direkt von der JSP aufrufen" willst; du hast ja aktuell in deiner Eingabe-JSP eine Form drin, so dass du beim Submit ein HTTP-Request an deinen Server an die in dem Form-Tag hinterlegten URL sendest.

      Normalerweise hat du auf der Serverseite dann dein Servlet, dass den Request verarbeitet und eine Response erzeugt. Was willst du als Response haben? Im deinem Code ist das z.B. eine relativ rudimentäre Seite ohne grosse HTML-Formatierung.

      Was du aber machen kannst - und wahrscheinlich wolltest du das auch - nicht das Servlet, sondern wieder deine JSP aufrufen. Das geht; da die JSP vom Server ja in ein Servlet umgewandelt wird. Und du kannst ja jederzeit beliebigen Java-Code in eine JSP mittels <% ... %> einbauen.

      Aber 1. das macht macht nicht, 2. das macht man nicht und 3. Wird der Code in der JSP dann grausam unleserlich.

      Du hast dir mit deinem Beispiel dein erstes eigenes Web-Framework gebaut; jetzt ist der nächste Schritt zu Techniken wie JSF oder Struts ja nicht mehr so weit ;-)
      Hi, und Danke für die Antwort.

      So was Ähnliches habe ich mir schon gedacht...
      Zusätzlich denke ich mal, der zentrale Grund liegt hier auch nicht zuletzt an der besseren Trennung von Content und Design.

      Anyway, nach den ersten Schritten merke ich, daß da ja doch noch was vor mir liegt, bis ich da so halbwegs im Thema drin bin....

      Gruss, lagloose

      Comment

      Working...
      X