[Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

24
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 1 Web Sistemak by Oskar Casquero & María Luz Álvarez is licensed under a Creative Commons Reconocimiento 4.0 Internacional License . TOMCAT WEB ZERBITZARIA Web Sistemak 9. ESKOLA (2017/02/28)

Transcript of [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Page 1: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 1

Web Sistemak by Oskar Casquero & María Luz Álvarez is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.

TOMCATWEB ZERBITZARIA

Web Sistemak 9. ESKOLA (2017/02/28)

Page 2: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 2

WEB ZERBITZARIA: HTTP ESKAERAK PROZESATZEN DITU ETA HTTP ERANTZUNAK ITZULTZEN DITU

HDD2

BEZEROAZERBITZARIA

TCP konexioaHTTP erantzuna

808057535

HDD1

HTTP/1.1 Status DeskribapenaGoiburuakCRLFMezuaren gorputza (zortzikoteetan)

HTTP erantzunaren sintaxia

HTTP/1.1 200 OKDate: Thu, 20 Nov 2015 20:25:52 GMTLast-Modified: Tue, 17 Sep 2015 13:00:02 GMTETag: "1a968-3ec-4e693e61bb8b6"Content-Length: 76Content-Type: text/html; charset=ISO-8859-1

<html><head><title>index.html</title></head><body>Hello World!</body></html>

HTTP erantzun baten adibidea

Page 3: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

WEB ZERBITZARIA: TOMCAT (SERVLET EDUKITZAILEA)

DIREKTORIO EGITURACATALINA_HOME

bin

conf

lib

logs

temp

webapps

work

Tomcat erabiltzeko script-ak gordetzen ditu, adibidez: Tomcat abiarazi eta gelditzeko script-ak.

Tomcat-en konfigurazio orokorra adierazten duten ezaugarri-fitxategiak gordetzen ditu.

Tomcat-en bihotza osotzen duten liburutegiak gordetzen ditu, adibidez: servlet API-a. Liburutegi hauek web aplikazio guztientzako eskuragarri daude.

Tomcat-en arazketa fitxategiak (log-ak) gordetzen ditu.

Tomcat-en aldi baterako fitxategiak gordetzen ditu.

Hemen web aplikazioak hedatzen dira.

Tomcat-ek tarteko ekintzak burutzean sortzen dituen fitxategiak gordetzen ditu, adibidez: JSP-ak konpilatzerakoan sortzen den servlet-ak.

Page 4: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

Aplikazioaren zati publikoa: JSP, HTML, CSS, JavaScript, irudiak...

WEB ZERBITZARIA: WEB APLIKAZIOAK DIREKTORIO

EGITURA

4

/ webapps

/<aplikazioa>

web.xml hedapen deskriptorea/src java fitxategiak /classes class fitxategiak/lib liburutegiak

/WEB-INF: aplikazioaren zati pribatua

/html

/jsp

/js

/img

Page 5: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 5

• Zuzenean: web aplikazioaren direktorio egitura sortu eta fitxategi bakoitza dagokion direktorioan sartu.

• WAR fitxategia– Web aplikazioaren direktorioa ZIP formatuan konprimatu eta

paketatzerakoan eratortzen den fitxategia da.– Eclipse-k WAR fitxategiak automatikoki sortzen ditu:

• Proiektua Export WAR file

TOMCAT: WEB APLIKAZIO BATEN HEDAPENA

Page 6: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 6

SERVLET-AK

ZERBITZARIA

Servlet

Servlet

ServletServlet

BDDB

BDDB

AplicaciónMahaigaineko

Aplikazioak

Eskaera

Erantzuna

• Servlet-a web bezero baten eskaerak prozesatu eta erantzuten dituen programa bat da.• Web aplikazio bat hainbat servlet-ez osoturik egon daiteke.• Tomcat servlet edukitzailea da.

AplicaciónWeb

Aplikazioak

Page 7: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

• Servlet-ak mota askotako eskaerei erantzun diezaieke, baina orokorrean web zerbitzariek jasotzen dituzten HTTP eskaerak prozesatu eta erantzuteko erabiltzen dira.

• Eginkizun honetarako Java Servlet teknologiak API jakin bat darabil: javax.servlet eta javax.servlet.http interfazeetan definiturikoa. Tomcat API honen inplementazio bat da.

SERVLET-AK

7

– javax.servlet• http://docs.oracle.com/javaee/5/api/javax/servlet/package-summary.html

– javax.servlet.http• http://docs.oracle.com/javaee/5/api/javax/servlet/http/package-summary.html

Page 8: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 8

SERVLET-AK: BIZITZA ZIKLOA

Server

Server

Server

Servlet Code

Bezeroa

BezeroaServlet Code

Load

UnloadServlet Code

Init()

Destroy()

Page 9: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A

9

• File New Dynamic

Web Project

Page 10: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A

10

• Proiektuaren izena: KaixoMundua

Page 11: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A

11

aukeratu!!!

Page 12: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A

12

• File New Servlet

Page 13: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A

13

PROGRAMAsarrera irteera

HttpServlet“Kaixo Mundua!”

HttpServletRequestrequest

(HTTP eskera)

HttpServletResponseresponse

(HTTP erantzuna)

package nirepaketea;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class KaixoMundua extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter http_out = response.getWriter(); http_out.println("Kaixo Mundua!"); }}

Servlet API-a

HTTP motako servlet-a

Page 14: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A ARAZKETA

14

package nirepaketea;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class KaixoMundua extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("---> Entering KaixoMundua servlet"); // log

PrintWriter http_out = response.getWriter(); http_out.println("Kaixo Mundua!"); System.out.println("<--- Exiting KaixoMundua servlet"); // log

}

}

Page 15: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 15

SERVLET-AK: NIRE LEHENENGO SERVLET-A web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns=http://xmlns.jcp.org/xml/ns/javaee xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">

<servlet> <servlet-name>KaixoMundua</servlet-name> <servlet-class>nirepaketea.KaixoMundua</servlet-class> </servlet> <servlet-mapping> <servlet-name>KaixoMundua</servlet-name> <url-pattern>/servlet/kaixomundua</url-pattern> </servlet-mapping>

</web-app>

• Blog-etik kopiatu:

Page 16: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A web.xml

16

<web-app> <servlet>

<servlet-name> servletName </servlet-name> <servlet-class> servletClass </servlet-class>

</servlet> <servlet-mapping>

<servlet-name> servletName </servlet-name> <url-pattern> /servletURL </url-pattern>

</servlet-mapping></web-app>

/ webapps

/WEB-INF

/classes

/<aplikazioa>

web.xml

servletClass.class

HTTP eskaerahttp://host:port/aplikazioa/servletURI

host:port12

3

4

5

6

<servlet-name> elementuaren balioa <servlet-class> eta <url-pattern> elementuak erlazionatzeko erabiltzen da, hau da, servlet bati zein URI dagokion adierazteko erabiltzen da.

Page 17: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE LEHENENGO SERVLET-A ARAZKETA

17

Page 18: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

• String getMethod()

• String getHeader(String name)

• java.util.Enumeration<String> getHeaderNames()

• String getParameter(String name)

• java.util.Enumeration<String> getParameterNames()

• …

SERVLET-AK: HTTPSERVLETREQUEST: METODOAK

18

Page 19: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE BIGARREN SERVLET-A HTTP ESKAERAREN GOIBURUAK

IRAKURRI

19

Page 20: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: HTTPSERVLETRESPONSE: METODOAKhttp://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html

• void setStatus(int sc)

• void setContentType(String type)

• void setContentLength(String type)

• void addHeader(String name, String value)

• void addCookie(Cookie cookie)

• java.io.PrintWriter getWriter()

• void sendRedirect(String location) 302 status kodea bueltatzen du

• …

20

Page 21: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE HIRUGARREN SERVLET-A HTML ORRIA SORTU

package nirepaketea;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class KaixoMunduaHTMLhardcoded extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("---> Entering KaixoMunduaHTMLhardcoded servlet"); response.setContentType("text/html");

PrintWriter http_out = response.getWriter(); http_out.println("<html>"); http_out.println("<head><title>HTML servlet</title></head>"); http_out.println("<body>"); http_out.println("<h2>HTML irteera sortzen duen servlet-a</h2>"); http_out.println("<p>Servlet honek bere barnean kodifikatuta duen"); http_out.println(" HTML dokumentua itzultzen du.</p>"); http_out.println("</body>"); http_out.println("</html>");

http_out.flush(); http_out.close(); System.out.println("<--- Exiting KaixoMunduaHTMLhardcoded servlet"); } }

Page 22: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática

SERVLET-AK: NIRE HIRUGARREN SERVLET-A HTML ORRIA SORTU

• HTML eta Java kodea nahasteak dakarren desabantaila: bista eta kontrola nahastu egiten dira.

– HTML-an egindako aldaketa bat berehala ikusi beharko litzakete, baina Java kode barnean egoterakoan:

• Java kodea konpilatu behar da.

• Zerbitzaria berrabiaraztea suposatu dezake, honek aldiune horretan dauden erabiltzaileak zerbitzu gabe uztea suposatzen duelarik

Page 23: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 23

SERVLET-AK: NIRE LAUGARREN SERVLET-A BISTA ETA KONTROLA BANANDU

package nirepaketea;

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class KaixoMunduaHTMLdispatched extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("---> Entering KaixoMunduaHTMLdispatched servlet"); response.setContentType("text/html");

System.out.println(" Redirecting to HTML document"); RequestDispatcher rd = request.getRequestDispatcher("/html/weborria.html"); rd.forward(request, response);

System.out.println("<--- Exiting KaixoMunduaHTMLdispatched servlet"); } }

<html> <head> <TITLE>HTML servlet</TITLE> </head> <body> <h2>HTML irteera sortzen duen servlet-a</h2> <p>Servlet honek irteera aparteko HTML batera berhelbideratzen du.</p> </body></html>

Page 24: [Web Sistemak] 9. ESKOLA (2017/02/28): Tomcat: oinarriak

Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática 24

• Printzipioz, berhelbideraketa egiteko bi modu daude, baina orokorrean ez dira trukagarriak (bakoitza helburu jakin baterako pentsaturik dago):

1. Zerbitzari barnean. RequestDispatcher rd = request.getRequestDispatcher("/html/weborria.html"); rd.forward(request, response);

2. Nabigatzailearen bitartez (302 redirect - location goiburua) response.sendRedirect("/KaixoMundua/html/weborria.html");

SERVLET-AK: NIRE LAUGARREN SERVLET-A BERHELBIDERAKETAK

servlet

html200

servlet302

html200

1 2

Aplikazioarekiko URI erlatiboahttp://localhost:8080/KaixoMundua/html/weborria.html

Zerbitzariarekiko URI erlatiboahttp://localhost:8080/KaixoMundua/html/weborria.html