Diferència entre revisions de la pàgina «Servlets»
(→Intro) |
|||
(Hi ha 6 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 28: | Línia 28: | ||
...i fem logout i login per activar aquests canvis. O, si no volem sortir, podem fer: | ...i fem logout i login per activar aquests canvis. O, si no volem sortir, podem fer: | ||
− | $ source ~/. | + | $ source ~/.profile |
<br> | <br> | ||
− | == Compilant == | + | == Compilant un Servlet == |
IMPORTANT: de moment NO cal fer res com a ''sudo''. Tot això (desenvolupar, compilar) està disponible per a tots els usuaris. | IMPORTANT: de moment NO cal fer res com a ''sudo''. Tot això (desenvolupar, compilar) està disponible per a tots els usuaris. | ||
Línia 39: | Línia 39: | ||
Compilem: | Compilem: | ||
$ javac HelloWorld.java | $ javac HelloWorld.java | ||
− | ...i es crearà l'arxiu .class | + | ...i es crearà l'arxiu '''.class''' , que és el que necessitem per fer el desplegament. |
<br> | <br> | ||
− | == Desplegament == | + | == Desplegament d'un Servlet == |
Anem a posar la nostra app en producció al [[Tomcat]]. | 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 OJU /test1/<url_servlet>, pel nostre cas: <pre>http://localhost:8080/test1/helloworld</pre> | ||
+ | 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 [[JSP]]s 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: | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <?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> | ||
+ | </syntaxhighlight> | ||
<br> | <br> | ||
+ | |||
+ | == Notes addicionals == | ||
+ | |||
+ | === Fully Qualified Class Names === | ||
+ | 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 | ||
+ | |||
+ | === IDEs === | ||
+ | Cal considerar la idoneïtat d'utilitzar els IDEs pel desenvolupament, ja que ens pot facilitar molt la feina d'organització del codi. | ||
+ | * Eclipse | ||
+ | * NetBeans | ||
+ | |||
+ | === Arxius war === | ||
+ | Podem fer deploys amb [https://en.wikipedia.org/wiki/WAR_%28file_format%29 arxius WAR] (Web server ARchive), a mode de ZIP que podem deixar a l'arrel del directori ''webapps'' i que Tomcat ens descomprimirà i desplegarà automàticament. | ||
+ | |||
+ | Un WAR file no deixa de ser un JAR file (un ZIP de Java o Java ARchive), només que pensat per deployment. | ||
+ | |||
+ | * [https://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/ Exemple simple per provar un WAR file]. | ||
+ | * ... |
Revisió de 11:09, 27 març 2017
Un Servlet és una llibreria per crear aplicacions Web amb llenguatge Java. Solen utilitzar Tomcat per desplegar el projecte.
Contingut
Intro[modifica]
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[modifica]
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 ~/.profile
Compilant un Servlet[modifica]
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[modifica]
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 OJU /test1/<url_servlet>, pel nostre cas:
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[modifica]
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[modifica]
Fully Qualified Class Names[modifica]
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
IDEs[modifica]
Cal considerar la idoneïtat d'utilitzar els IDEs pel desenvolupament, ja que ens pot facilitar molt la feina d'organització del codi.
- Eclipse
- NetBeans
Arxius war[modifica]
Podem fer deploys amb arxius WAR (Web server ARchive), a mode de ZIP que podem deixar a l'arrel del directori webapps i que Tomcat ens descomprimirà i desplegarà automàticament.
Un WAR file no deixa de ser un JAR file (un ZIP de Java o Java ARchive), només que pensat per deployment.