Τεχνολογίες WWW

Ιστολόγιο σχετικό με συνώνυμο μάθημα του Παν. Θεσσαλίας

Deploying a servlet

Πώς δημιουργούμε ένα servlet και που το τοποθετούμε στον Tomcat

  • Τα servlet είναι αρχεία java οπότε σε ένα αρχείο MyServlet.java γράφουμε τον παρακάτω κώδικα:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
rsp.setContentType("text/html");
PrintWriter out = rsp.getWriter();
out.println("<html>");
out.println("<head><title> Simple Servlet </title></head>");
out.println("<body>"); out.println("<p>This is a simple Servlet!</p>");
out.println("</body></html>");
}
}

  • Κάνουμε compile το παραπάνω αρχείο (επειδή κάναμε import javax.servlet.http.*) πρέπει να ορίσουμε το classpath π.χ. στον javac:
    javac -classpath "/usr/local/apache-tomcat-7.0.22/lib/servlet-api.jar" MyServlet.java
  • έτσι μας δημιουργείται το αρχείο MyServlet.class
  • αυτό το αρχείο θέλουμε να το μεταφέρουμε κάτω από ένα συγκεκριμένο subdirectory του tomcat (/ROOT/WEB-INF/classes) οπότε πληκτρολογούμε:
    sudo mv MyServlet.class /usr/local/apache-tomcat-7.0.22/webapps/ROOT/WEB-INF/classes/
  • πάμε τώρα στο:
    cd /usr/local/apache-tomcat-7.0.22/webapps/ROOT/WEB-INF/
  • εκεί βλέπουμε δύο αρχεία το classes και το web.xml
  • πρέπει να κάνουμε mapping στο web.xml για να τρέξει το servlet.
  • ανοίγουμε το web.xml με έναν editor sudo gedit web.xml

και ανάμεσα από τα <web-app> </web-app> τοποθετούμε τον εξής κώδικα:
<servlet>
<servlet-name> Servlet </servlet-name>
<servlet-class> MyServlet </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> Servlet </servlet-name>
<url-pattern> /my </url-pattern>
</servlet-mapping>

  • ανοίγουμε τον Tomcat όπως είπαμε /usr/local/apache-tomcat-7.0.22/bin/startup.sh
  • και σε έναν browser γράφουμε την διεύθυνση http://localhost:8080/my
    (θα μας βρει το μήνυμα This is a simple Servlet!)

πηγή: http://www.sitepoint.com/java-servlets-1/

21 responses to “Deploying a servlet

  1. kroumeliot 9 Οκτωβρίου, 2011 στο 13:48

    Ypaexei ena typografiko sto web.xml oso anafora to
    To swsto einai:

    Servlet
    MyServlet

    Servlet
    /my

  2. kroumeliot 9 Οκτωβρίου, 2011 στο 13:52

    Epeidi den emfanizetai to xml auto pou ennoousa prin einai oti to servlet name prepei na einai koino kai sto servlet mapping.

  3. kostasa89 9 Οκτωβρίου, 2011 στο 14:33

    ναι, αυτό ήταν το λάθος!

  4. anskourt 9 Οκτωβρίου, 2011 στο 15:06

    kostasa89 de kserw ti kanw lathos.
    to tutorial to akolouthw kata gramma
    kai me ti diorthwsi alla pairnw to parakatw
    (einai mono oi prwtes grammes)

    HTTP Status 500 –

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    • kostasa89 9 Οκτωβρίου, 2011 στο 15:58

      κάνε την διόρθωση που είπαμε στο παρακάτω comment πρώτα στο web.xml(διορθώθηκε και στο αρχικό post πλέον).( Πολλές φορές χρειάζεται να κλείσεις και να ξαναξεκινήσεις το Tomcat.κλείσε τον browser κλείσε το Tomcat /usr/local/…bin/shutdown άνοιξε τον tomcat /usr/local/../bin/start και ξαναβάλε το url στον browser.

  5. aea 9 Οκτωβρίου, 2011 στο 15:14

    exei diorthwthei kati sto tutorial? giati den katalavainw ti lete sta sxolia, kai den leitourgei opws tha eprepe

  6. kostasa89 9 Οκτωβρίου, 2011 στο 15:42

    πρέπει να διορθώσεις το εξής:
    εκεί που λέει:
    ανοίγουμε το web.xml με έναν editor sudo gedit web.xml

    και ανάμεσα από τα τοποθετούμε τον εξής κώδικα:

    Servlet
    MyServlet

    MyServlet
    /my

    εκεί που λέει MyServlet
    άλλαξέ το με το Servlet
    (δηλαδή βγάλε το My από μπροστά)

  7. kostasa89 9 Οκτωβρίου, 2011 στο 15:50

    δεν εμφανίζεται το web.xml αλλά ελπίζω να αλλαχθεί σε λίγο και το αρχικό Post
    εκεί που υπάρχει servlet-name MyServlet /servlet-name(το γράφω χωρίς τα tag)
    αλλάζουμε το MyServlet σε σκέτο Servlet για να συμβαδίζει με το όνομα που έχουμε δώσει παραπάνω

  8. anskourt 9 Οκτωβρίου, 2011 στο 16:24

    den ekana aplws restart to tomcat alla olokliro
    to pc. afu tsekara kai to original tutorial apo to link
    pou to pires ki esy mipws kai kati eixe ksefygei,
    alla tpt. ti na pw… tha tsekarw mpas kai leipei kamia vivliothiki

  9. aea 9 Οκτωβρίου, 2011 στο 16:26

    kanw paste ta errors pou evgale afou ekana ti diorthwsi, kai restart to tomcat

    http://pastebin.com/QnK0baQa

  10. anskourt 9 Οκτωβρίου, 2011 στο 16:35

    akrivws ta idia kai se mena

  11. marilena 12 Οκτωβρίου, 2011 στο 23:10

    emena pantws katw ap’to ROOT den mou douleue para mono otan:

    ekana folder me onoma project opws k opou fenetai edw:

    /usr/local/apache-tomcat-7.0.22/webapps/
    project/
    WEB-INF/
    web.xml
    classes/
    MyServlet.class

    kai me url: http://localhost:8080/project/my mou etrekse.

    p.s xreiastike k restart ton Tomcat

    an genika kserei kaneis ti epaikse as pei..

  12. antwnhsdhmtsas 17 Οκτωβρίου, 2011 στο 17:59

    kai emena de douleuei vgazei ta sfalmata pou eipan ta paidia…

    • antwnhsdhmtsas 17 Οκτωβρίου, 2011 στο 18:19

      Telika etrexe!Profanws ta paidia allaksan to la8os post kai evalan panw to swsto…egw den to antilif8hka auto kai allaksa to MyServlet se Sevlet…de xreiazetai…autos einai o kwdikas dhladh gia to mapping:

      Servlet
      MyServlet

      Servlet
      /my

  13. Pingback: Homework 2! « WWW Technologies

  14. Pingback: Homework2 « My Blog

  15. kopapaha 19 Οκτωβρίου, 2011 στο 19:52

    Ίσως σε κάποιους χρειαστεί να δημιουργήσουν έναν φάκελο classes (αν δεν υπάρχει) (mkdir classes) κάτω απο το /usr/local/apache-tomcat-7.0.22/webapps/ROOT/WEB-INF για τη μεταφορά του αρχείου

  16. Pingback: Εργασία 2 « Wanderlust

Αφήστε απάντηση στον/στην antwnhsdhmtsas Ακύρωση απάντησης