6. astea (2016/03/01): tomcat

15
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 6. ASTEA (2016/03/01)

Upload: oskar-casquero

Post on 13-Jan-2017

760 views

Category:

Education


0 download

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 6. ASTEA (2016/03/01)

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

• Web aplikazioek orokorrean eta servlet-ek bereiziki dituzten ezaugarri aurreratuak azalduko dira:– Datu basea.

• Datu gordetze iraunkorra nahiz eta web aplikazioa berrabiarazi.– Saioa (session): aplikazio baten barnean, erabiltzaile batentzat sortutako azi-testuingurua.

• Cookie-kiko erlazioa.• Aldi baterako datu gordetzea saioak bizirik jarraitzen duen bitartean.

– Testuingurua (context): aplikazioaren testuingurua, hau da, servlet, saio eta eskera/erantzun guztien euskarri dena.• Aldi baterako datu gordetzea aplikazioa berrabiarazten ez den bitartean.• Testuinguru hau erabiliz saio edo servlet ezberdinek datuak partekatu ditzakete.

– JSP-ak• Web orriak era dinamikoan sortzeko, HTML-an Java kodea sartzean datza.

• Alderdi hauek ikasteko Shareinfo web aplikazioa ardatz bezela erabiliko dugu– Shareinfo.sql mysqldump-a erabilita datu basea sortuko dugu.

• https://github.com/kaskero/ShareInfo/blob/master/ShareInfo/ShareInfo.sql– Web aplikazioa GitHub-etik inportatuko dugu.

• https://github.com/kaskero/ShareInfo

WEB APLIKAZIO DINAMIKOA – SHAREINFOSARRERA

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

WEB APLIKAZIO DINAMIKOA – SHAREINFODATU BASEA INPORTATU

3

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOTOMCAT PROIEKTUA GITHUB-ETIK INPORTATU

4

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOTOMCAT PROIEKTUA GITHUB-ETIK INPORTATU

5

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOTOMCAT PROIEKTUA GITHUB-ETIK INPORTATU

6

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOTOMCAT PROIEKTUA GITHUB-ETIK INPORTATU

7

Aplikazioaren zati publikoa

Aplikazioaren hedapen fitxategia

Aplikazioarenzati pribatua

Aplikazioaren liburutegiak

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOFLUXU DIAGRAMA

8

LoginServletLoginForm

.html MainServlet

SignupServletsignupForm

.html

ViewMessages.jsp

MySessionListener

POST (email, password, username)

BD

Login error

Link

: Sig

n U

p

BD

Redirect

POST (email,password)

Redirect

Not logged in (logout or session expired)

SESSION SESSION

Redirect

POST (message) or Link: Refresh

BD

Redirect

Redirect

SESSION

Event

CONTEXT

CONTEXT

ZATI PUBLIKOA

ZATI PRIBATUA

View messages

Logged in

Sess

ion

expi

red?

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

SESSION 1

SESSION 2

WEB APLIKAZIO DINAMIKOA – SHAREINFODATUEN PARTEKATZEA

9

Datu baseaTestuingurua

CONTEXTSaioa

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

WEB APLIKAZIO DINAMIKOA – SHAREINFODATUEN PARTEKATZEA: ESKAERA ETA SAIO MAILAK

10

SERVLET 1String str1 = HttpServletRequest.getParameter(“a”);

Eskaeran informazio gehigarria sartu:Object obj1 = new Object()

HttpServletRequest.setAttribute(“c”, obj1)

Saoian informazio gehigarria sartu:Object obj2 = new Object()

HttpSession.setAttribute(“d”, obj2)

SESSION

REQUEST 1

Datuak: a, bSERVLET 2

String str2 = HttpServletRequest.getParameter(“b”);

Object obj1 = HttpServletRequest.getAttribute(“c”);

REQUEST 1

Datuak: a, b, c

SERVLET 3

String str3 = HttpServletRequest.getParameter(“e”)

Object obj2 = HttpSession.getAttribute(“d”);

REQUEST 2

Datuak: e

Datuak: sessionID, …, d

USER

Request parameterRequest attributeSession attribute

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

WEB APLIKAZIO DINAMIKOA – SHAREINFODATUEN PARTEKATZEA: SAIO ETA TESTUINGURU MAILA

11

SESSION 1

CONTEXT

SERVLET 1

String user = HttpServletRequest.getParameter(“user”);

Saioan informazio gehigarria sartu:session.setAttribute(“logged_as”, user);

Testutinguruan informazio gehigarria sartu:ArrayList<String> array = context.getAttribute("loggedin_users");

array.add(user);context.setAttribute("loggedin_users", array);

REQUEST 1

Datuak: user=oskar

USER 1

Datuak: loggedin_users= [“oskar”]

Datuak: logged_as=oskar

Request parameterSession attributeContext attribute

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

WEB APLIKAZIO DINAMIKOA – SHAREINFODATUEN PARTEKATZEA: SAIO ETA TESTUINGURU MAILA

12

SESSION 2

CONTEXT

SERVLET 1

String user = HttpServletRequest.getParameter(“user”);

Saioan informazio gehigarria sartu:session.setAttribute(“logged_as”, user);

Testutinguruan informazio gehigarria sartu:ArrayList<String> array = context.getAttribute("loggedin_users");

array.add(user);context.setAttribute("loggedin_users", array);

REQUEST 2

Datuak: user=mariluz

USER 2

Datuak: loggedin_users= [“oskar”, “mariluz”]

REQUEST 3SERVLET 2

Saiotik informazio gehigarria atera:String user = session.getAttribute(“logged_as”, user);

Datuak:logged_as=mariluz

JSPArrayList<String> array =

context.getAttribute("loggedin_users");

Request parameterSession attributeContext attribute

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

• Eskaera objetu batetik (HttpServletRequest) saioa sortzeko/lortzeko: – HttpSession session = request.getSession(boolean create);

• http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSession.htmlHttpSession metodoak:– Object getAttribute (String name)– void setAttribute(String name, Object value)– String getId()– long getCreationTime()– long getLastAccessedTime() – int getMaxInactiveInterval()– void invalidate()

WEB APLIKAZIO DINAMIKOA – SHAREINFOSAIOA: HTTPSESSION

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

• Eskaera/Saio objetu batetik testuingurua lortzeko: – ServletContext context = request/session.getServletContext();

• http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.htmlServletContext metodoak:– Object getAttribute (String name)– void setAttribute(String name, Object value)

Berhelbideraketak web aplikazioa osotzen duten elementuen artean:– Servlet JSP

RequestDispatcher rd = request.getRequestDispatcher("/jsp/viewMessages.jsp");rd.forward(request, response);

– Servlet 1 Servlet 2RequestDispatcher rd = context.getNamedDispatcher("MainServlet"); rd.forward(request, response);

WEB APLIKAZIO DINAMIKOA – SHAREINFOTESTUINGURUA: SERVLETCONTEXT

Aplikazioarekiko URI erlatiboahttp://localhost:8080/ShareInfo/jsp/viewMessages.jsp

Servlet name (web.xml)

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

• 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/loginForm.html"); rd.forward(request, response);

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

WEB APLIKAZIO DINAMIKOA – SHAREINFOBERHELBIDERAKETAK

servlet

html200

servlet302

html200

1 2

Aplikazioarekiko URI erlatiboahttp://localhost:8080/ShareInfo/jsp/viewMessages.jsp

Zerbitzariarekiko URI erlatiboahttp://localhost:8080/ShareInfo/jsp/viewMessages.jsp