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