Diferència entre revisions de la pàgina «Servlets»
(Es crea la pàgina amb «Un Servlet és una llibreria per crear aplicacions Web amb llenguatge Java. Solen utilitzar Tomcat per desplegar el projecte. == Intro == Referències: * Primer e...».) |
|||
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 5: | Línia 5: | ||
* Primer exemple (i més): http://www.tutorialspoint.com/servlets/servlets-first-example.htm | * 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/ | * 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 <code>webapps</code> amb les aplicacions per desplegar | ||
+ | * /etc/default/tomcat7 : conf inicial JAVA_OPTS (memòria) | ||
+ | * /etc/tomcat7 : conf, users, etc. | ||
+ | * LOGS = /var/log/tomcat7 | ||
<br> | <br> | ||
Línia 20: | 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 31: | 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]]. | ||
+ | |||
+ | # 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.