Announcement

Collapse
No announcement yet.

servlets und applets

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

  • servlets und applets

    Hi

    seit gestern Mittag versuche ich über ein Servlet ein Applet zu starten. Ich habe eine Seite gefunden die das erklärt, aber es geht nicht. Wißt ihr wo ich meine Applet Klassen hinkopieren muß und wie meine CODEBASE aussehen muß und, letzte Frage, das ganze muß in die doGet Methoden rein wa?

    Hoff von euch weiß es jemand...

    tschö

  • #2
    Hi,

    wenn ich wüsste was du für eine Servletengine benutzt, welche Version der Servlet-API, eventuelle Einträge der entsprechenden WebServer/SE-Konfigurationsdateien die die Document-Base diner WebApp festlegen und ..., dann könnte man es schon genauer sagen. Ein Directory auf deinem Server ist jedenfalls ein guter Platz.

    Spass beiseite.
    Ein Appletwird defaulmaessig von dem Dir. geladen in dem die HTML-Seite liegt, also normalerweise aus dem statischen Bereich einer WebApplikation. Ein Servlet liegt im dynamischen Bereich, also unter WEB-INF/classes. Um die (neudeutsch) Ladelocation des Applets vom default zu verändern dient das Attribut "codebase" im applet-Tag. Menn man also möcht, dass das Applet aus dem Root-Dir. der WebApp. geladen wird (DocBase der WebApp) sollte folgender Code funktionieren (OS=NT 4.0, WebServer/SE=tomcat v3.2.3, Browser=bel.):

    <pre>
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    /*
    * LoadApplet
    *
    * @version 1.0 krg 12.11.2001
    * @author G.Kreutzer
    */
    public class LoadApplet extends HttpServlet {

    private String title = "LoadApplet V1.0";
    private ServletContext mySC;
    private String myName;
    private String docBase; // Wurzel-Pfad für Documente dieser WebApp.

    public void init() {
    mySC = getServletContext();
    myName = getServletConfig().getServletName();
    docBase = mySC.getRealPath("/");
    }

    public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    PrintWriter out = res.getWriter(); // Writer für Ausgabe
    res.setContentType("text/html"); // MIME Type

    out.println("<html>\n <head>\n <title>" + title + "</title>");
    out.println(" </head>\n <body>");
    out.println(" <h1>" + title + "</h1>");

    out.println("\n<p>Es folgt das Applet AppletLoad</p>");
    out.println("<applet code=\"AppletLoad.class\" codebase=\"" + docBase + "\"");
    out.println(" height=200 width=300> </applet>");

    out.println(" </body>\n</html>");
    out.close();
    }
    }
    </pre>

    tschö? gerhar

    Comment


    • #3
      danke, und, ups, ok also mein server ist der tomcat 4.0, servlet api ist die 2.3. ich hab wo gelesen das in dem Verzeichnis WEB-INF keine Applets sein dürfen da die Verzeichnisse nur für Servlets sind und so. Sprich ich müßte dann theoretisch die Applet Klassen in das Verzeichnis webapps/[meinVerzeichnis] reinstecken!? dann müßte ich aber die Codebase verändern, und dann ist die Frage, wie lautet die? zählt [meinVerzeichnis] bereits mit?

      tschö = tschau
      maz

      Comment


      • #4
        Hi,

        sorry, ich habe die <b>Formatierungsregeln</b> nicht beachtet. Der Code ab setContentType:
        <pre>
        res.setContentType("text/html"); // MIME Type

        out.println("&lthtml&gt\n &lthead&gt\n &lttitle&gt" + title + "&lt/title&gt");
        out.println(" &lt/head&gt\n &ltbody&gt");
        out.println(" &lth1&gt" + title + "&lt/h1&gt");

        out.println("\nEs folgt das Applet AppletLoad");
        out.println("&ltapplet code=\"AppletLoad.class\" codebase=\"" + docBase + "\"");
        out.println(" height=200 width=300&gt &lt/applet&gt");

        out.println(" &lt/body&gt\n&lt/html&gt");
        out.close();
        </pre>

        Ich hoffe man kann es diesmal lesen. Das war das letzte mal, das ich hier Code reinschreiben werde. Man braucht die doppelte Zeit um das Ganze umzuformatieren.

        Wie du ganz richtig bemerkt hast, brauchts du die Codebase deiner WebApp. Die bekommst du z.B. absolut mit ServletContext.getRealPath("/"). Diesen absoluten Pfad (bei mir in der Variablen docBase) kannst du in deinem Applet-Tag benutzen: codebase=\"" + docBase + "\"".
        Entsprechende Subdirs. könne von documentBase der Webapp beliebig gewählt werden, solange du im statischen Bereich bleibst, also oberhalb von WEB-INF.

        Ich hoffe es klappt diesmal.
        Viel Spass
        Gerhar

        Comment


        • #5
          Ich denke ich sollte meine HTML-Kenntnisse mal auffrischen. Da fehlt halt ein Compiler: ';' expected.
          <pre>
          test
          &lt;applet .... codebase=" + docBase + "\" ....&gt;");
          </pre>
          cia

          Comment


          • #6
            cool danke

            Comment

            Working...
            X