[web sistemak] 9. eskola (2017/02/28): tomcat: oinarriak
Post on 12-Apr-2017
340 Views
Preview:
TRANSCRIPT
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)
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
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.
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
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
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
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
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()
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
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
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
SERVLET-AK: NIRE LEHENENGO SERVLET-A
11
aukeratu!!!
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
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
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
}
}
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:
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.
Oskar Casquero y María Luz Álvarez Dpto. Ingeniería de Sistemas y Automática
SERVLET-AK: NIRE LEHENENGO SERVLET-A ARAZKETA
17
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
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
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
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"); } }
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
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>
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
top related