Diferència entre revisions de la pàgina «Servlets»
Línia 51: | Línia 51: | ||
# Crear arxiu '''web.xml''' dins de WEB-INF amb els continguts de més avall. | # Crear arxiu '''web.xml''' dins de WEB-INF amb els continguts de més avall. | ||
# Copiar l'arxiu compliat '''HelloWorld.class''' al directori ''classes''. | # Copiar l'arxiu compliat '''HelloWorld.class''' al directori ''classes''. | ||
+ | # Comprovem que ens apareix la nova app (test1) al panell de control http://localhost:8080/manager on podrem engegar-la i parar-la | ||
# Ja podem visitar el nostre servlet a http://localhost:8080/test1/helloworld | # Ja podem visitar el nostre servlet a http://localhost:8080/test1/helloworld | ||
Revisió del 09:42, 1 març 2016
Un Servlet és una llibreria per crear aplicacions Web amb llenguatge Java. Solen utilitzar Tomcat per desplegar el projecte.
Intro
Referències:
- Primer exemple (i més): http://www.tutorialspoint.com/servlets/servlets-first-example.htm
- Tutorial Tomcat+Eclipse+Servlets: http://www.coreservlets.com/Apache-Tomcat-Tutorial/
Quick Reference per Ubuntu 14.04:
- URL = http://myhost:8080
- CATALINA_HOME = /usr/share/tomcat7
- CATALINA_BASE = /var/lib/tomcat7: aquí teniu la carpeta
webapps
amb les aplicacions per desplegar - /etc/default/tomcat7 : conf inicial JAVA_OPTS (memòria)
- /etc/tomcat7 : conf, users, etc.
- LOGS = /var/log/tomcat7
Setup
Els diferents components que necessitarem seran:
- JDK : Java Development Kit, inclou eines (compiladors, màquines virtuals java, etc.) i les llibreries per desenvolupar.
- Eclipse: IDE per a Java disponible en moltes plataformes.
- Tomcat: el servidor d'aplicacions per a Java.
De moment només compilarem des de la línia de comandes. "A pelo".
Ens caldrà ajustar algunes llibreries perquè estiguin disponibles per al compilador:
$ echo "export CLASSPATH=/usr/share/tomcat7/lib/*" >> ~/.profile
...i fem logout i login per activar aquests canvis. O, si no volem sortir, podem fer:
$ source ~/.bashrc
Compilant un Servlet
IMPORTANT: de moment NO cal fer res com a sudo. Tot això (desenvolupar, compilar) està disponible per a tots els usuaris.
Agafeu el primer exemple HelloWorld del tutorial i el poseu en un arxiu HelloWorld.java en la vostra carpeta de desenvolupament.
Compilem:
$ javac HelloWorld.java
...i es crearà l'arxiu .class , que és el que necessitem per fer el desplegament.
Desplegament d'un Servlet
Anem a posar la nostra app en producció al Tomcat.
- Crear carpeta d'aplicació a /var/lib/tomcat7/webapps, per exemple test1.
- Crear carpeta WEB-INF dins de test1
- Crear carpeta classes dins de WEB-INF
- Crear arxiu web.xml dins de WEB-INF amb els continguts de més avall.
- Copiar l'arxiu compliat HelloWorld.class al directori classes.
- Comprovem que ens apareix la nova app (test1) al panell de control http://localhost:8080/manager on podrem engegar-la i parar-la
- Ja podem visitar el nostre servlet a http://localhost:8080/test1/helloworld
L'estructura d'arxius ens ha de quedar així:
webapps ├── ROOT │ ├── index.html │ └── META-INF │ └── context.xml └── test1 └── WEB-INF ├── classes │ └── HelloWorld.class └── web.xml
És important saber que tenim disponible la carpeta test1 per posar-hi contingut estàtic (imatges, HTML) o JSPs si ho desitgem.
Arxiu web.xml
En aquest arxiu li passem la informació que necessita Tomcat per engegar el servlet amb la ruta adequada, pel nostre cas /test1/helloworld:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Hello, World Application</display-name>
<description>
This is a simple web application with a source code organization
based on the recommendations of the Application Developer's Guide.
</description>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
</web-app>