Diferència entre revisions de la pàgina «Servlets»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 96: Línia 96:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
<br>
  
<br>
+
== Notes addicionals ==
 +
Si fem desenvolupaments més complexes ens convé fer una estructura d'arxius més formal. Particularment, si volem ''fully qualified class names'' com per exemple com.mypackage.MyClass1 ens caldrà fer una estructura d'arxius així:
 +
.
 +
├── classes
 +
│   └── com
 +
│      └── mypackage
 +
│          └── MyClass1.class
 +
└── src
 +
    └── com
 +
        └── mypackage
 +
            └── MyClass1.java
 +
 
 +
També cal considerar la idoneïtat d'utilitzar el IDE [[Eclipse]] pel desenvolupament, ja que ens pot facilitar molt la feina d'organització del codi.

Revisió del 09:55, 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:

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.

  1. Crear carpeta d'aplicació a /var/lib/tomcat7/webapps, per exemple test1.
  2. Crear carpeta WEB-INF dins de test1
  3. Crear carpeta classes dins de WEB-INF
  4. Crear arxiu web.xml dins de WEB-INF amb els continguts de més avall.
  5. Copiar l'arxiu compliat HelloWorld.class al directori classes.
  6. Comprovem que ens apareix la nova app (test1) al panell de control http://localhost:8080/manager on podrem engegar-la i parar-la
  7. 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>


Notes addicionals

Si fem desenvolupaments més complexes ens convé fer una estructura d'arxius més formal. Particularment, si volem fully qualified class names com per exemple com.mypackage.MyClass1 ens caldrà fer una estructura d'arxius així:

.
├── classes
│   └── com
│       └── mypackage
│           └── MyClass1.class
└── src
    └── com
        └── mypackage
            └── MyClass1.java

També cal considerar la idoneïtat d'utilitzar el IDE Eclipse pel desenvolupament, ja que ens pot facilitar molt la feina d'organització del codi.