Πώς δημιουργούμε ένα 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/
0.000000
0.000000
Ypaexei ena typografiko sto web.xml oso anafora to
To swsto einai:
Servlet
MyServlet
Servlet
/my
Epeidi den emfanizetai to xml auto pou ennoousa prin einai oti to servlet name prepei na einai koino kai sto servlet mapping.
ναι, αυτό ήταν το λάθος!
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.
κάνε την διόρθωση που είπαμε στο παρακάτω comment πρώτα στο web.xml(διορθώθηκε και στο αρχικό post πλέον).( Πολλές φορές χρειάζεται να κλείσεις και να ξαναξεκινήσεις το Tomcat.κλείσε τον browser κλείσε το Tomcat /usr/local/…bin/shutdown άνοιξε τον tomcat /usr/local/../bin/start και ξαναβάλε το url στον browser.
exei diorthwthei kati sto tutorial? giati den katalavainw ti lete sta sxolia, kai den leitourgei opws tha eprepe
πρέπει να διορθώσεις το εξής:
εκεί που λέει:
ανοίγουμε το web.xml με έναν editor sudo gedit web.xml
και ανάμεσα από τα τοποθετούμε τον εξής κώδικα:
Servlet
MyServlet
MyServlet
/my
εκεί που λέει MyServlet
άλλαξέ το με το Servlet
(δηλαδή βγάλε το My από μπροστά)
δεν εμφανίζεται το web.xml αλλά ελπίζω να αλλαχθεί σε λίγο και το αρχικό Post
εκεί που υπάρχει servlet-name MyServlet /servlet-name(το γράφω χωρίς τα tag)
αλλάζουμε το MyServlet σε σκέτο Servlet για να συμβαδίζει με το όνομα που έχουμε δώσει παραπάνω
Άλλαξε και το αρχικό άρθρο.
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
κάνε με add στο msn turbokotsios@hotmail.com
kanw paste ta errors pou evgale afou ekana ti diorthwsi, kai restart to tomcat
http://pastebin.com/QnK0baQa
akrivws ta idia kai se mena
It works :-p
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..
kai emena de douleuei vgazei ta sfalmata pou eipan ta paidia…
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
Pingback: Homework 2! « WWW Technologies
Pingback: Homework2 « My Blog
Ίσως σε κάποιους χρειαστεί να δημιουργήσουν έναν φάκελο classes (αν δεν υπάρχει) (mkdir classes) κάτω απο το /usr/local/apache-tomcat-7.0.22/webapps/ROOT/WEB-INF για τη μεταφορά του αρχείου
Pingback: Εργασία 2 « Wanderlust