Sunteți pe pagina 1din 58

Universitatea

Politehnica
Bucureti
Facultatea de
Automatic i
Calculatoare
Catedra de
Calculatoare
2013 2014
Dezvoltarea aplicaiilor Internet
Gavril GODZA, gavril.godza@cs.pub.ro
Tehnologii Java pentru aplicaii Web
DAI organizare
Site cursuri: curs.cs.pub.ro
Asignare la curs n primele (3) sptmni.
Notare:
Activitate pe parcurs, 70p
o Activitate laborator, minim 3 laboratoare, 10p
Fiecare laborator primete o not de la 1 la 10.
Pentru recuperare laborator (doar n perioada normal) nota e maxim 9.
o Realizare aplicaie Web (~proiect individual), 60p
Prezentare aplicaie (10 minute, conform planificrii), 10p.
Realizare aplicaie (organizare surse, tratare probleme speciale, proiectare
aplicaie, proiectare baz de date, interfa utilizator), 35p.
Documentare aplicaie (proiectare, dezvoltare, instalare, utilizare), 25p.
Examen, 30p
o 10 ntrebri din 11/12, n 30 minute.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 2
Aplicaii Web
Aplicaie Web: aplicaie gzduit de un server i
accesibil dintr-un client (navigator, thin client).
Navigatoare uzuale (http://www.w3schools.com)
Difer prin
o HTML
o CSS
o DOM
o Javascript

Comunicare prin
Protocolul HTTP
Limbajul HTML.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 3
Server Web
Server Web:
Primete cereri HTTP de la clieni.
Servete rspunsuri (fiiere HTML i alte resurse).
URL:
scheme://host[:port#]/path//[;url-params][?query-string][#anchor]
scheme: protocol (http, ftp etc.).
host: numele sau adresa IP a serverului Web.
port#: numr port server Web (80 implicit HTTP).
path: calea de la rdcina serverului la documentul identificat
(documentul poate fi implicit: index.html, index.jsp).
url-params: pentru identificarea sesiunii.
query-string: valori din formularul HTML.
anchor: referin la un marcaj poziional din document.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 4
HTTP
Protocol stateless.
Folosete paradigma request/response:
Structura mesajelor:
o linia de comand / rspuns
o linii de antet (nume: valoare)
o linie blank
o corp mesaj
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 5
HTTP
Metode HTTP uzuale:
GET
POST
HEAD
PUT
DELETE
TRACE
OPTIONS
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 6
Coduri de eroare:
1xx: Informaie.
2xx: Succes (200 = cerere reuit).
3xx: Redirectare:
o 301 pagin mutat definitiv
o 302 pagin mutat temporar
o 304 pagina din cache e nc valid
4xx: Eroare la client:
o 400 cerere incorect
o 401 acces ne-autorizat
o 403 acces interzis
o 404 pagina nu a fost gsit
5xx: Eroare la server (500 eroare intern server).
Server de aplicaii
Server Web care ofer aplicaiilor gzduite:
Servicii suplimentare (tranzacii, log, mesaje).
Un container n care se execut aplicaiile.
Ofer acces clienilor la logica de business prin
HTTP sau alte protocoale.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 7
Exemple de servere
Servere Web:
Apache
Microsoft IIS
Servere de aplicaii:
Tomcat
Oracle (BEA) Weblogic
IBM WebSphere
JBoss
Microsoft IIS cu .Net
GlassFish
Sisteme de operare de tip server:
Windows
Linux
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 8
Caracteristici aplicaie Web
Aplicaie Web: extensie dinamic a unui server
Web sau a unui server de aplicaii.
Aplicaii Web orientate ctre:
Prezentare, genereaz pagini Web interactive.
Servicii, implementeaz un furnizor de servicii Web.
Exemple:
Web mail.
eCommerce.
Socializare.
...
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 9
Caracteristici aplicaie Web
Caracter dinamic.
Numr mare de utilizatori.
Tendin de apropiere de aplicaii desktop.
Mecanisme de control acces.
Pagin home i funcionaliti specifice.
Tehnologii implicate:
HTTP
HTML
Javascript
AJAX
Java
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 10
Dezvoltarea de aplicaii Web
Interpretare cereri HTTP.
Generare pagini rspuns:
Persistare date n baze de date.
Executare algoritm specific de tratare.
Structur general pagin:
Poriuni statice (abloane).
Poriuni completate dinamic.
Limbaje folosite pe client:
HTML, Javascript
Limbaje folosite pe server:
Java, C#, PHP, SQL, ...
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 11
Probleme
Compatibilizare limbaje i tehnologii diferite.
HTTP este protocol stateless.
Securitate.
Calitate a serviciilor.
Testare i depanare mai complex.
Disponibilitate.
Control ncrcare.
Performan.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 12
Soluii
Modularizare (MVC).
Folosirea de platforme suport (Web frameworks).
Utilizarea mediilor de dezvoltare (IDE):
Eclipse: http://www.eclipse.org/downloads/
NetBeans: http://netbeans.org/downloads/
Visual Studio (Express): http://www.microsoft.com/express
JDeveloper: http://www.oracle.com/technetwork/developer-
tools/jdev/downloads/index.html
Idea: http://www.jetbrains.com/idea/download/
Limbaje dedicate:
Python
Ruby
Groovy
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 13
Web Frameworks
Infrastructura pe baza creia se construiesc
aplicaii Web.
Obiective:
Accelerare dezvoltare aplicaii.
Cretere calitate aplicaii.
Accelerare dezvoltare:
Preluare cod din biblioteci (reutilizare).
Generare cod pe baza unui model (convenii).
Framework-uri:
Bibliotec de funcii sau colecie de abloane.
Dedicate (ORM Hibernate, AJAX jQuery) sau generale.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 14
Web Frameworks
Un framework complet:
Include Server Web.
Include Server de baze de date.
Este accesibil din linie de comand sau dintr-un IDE.
De obicei aplicaia Web este o arhiv.
Trebuie deploy-at pe server.
Paradigma MVC:
Model: datele folosite de aplicaie (preluate din baza de date).
View: prezentarea aplicaiei (pagini HTML cu JavaScript).
Controller: logica de control acces la date i de generare pagini.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 15
MVC

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 16
Java Enterprise Edition
Platform Java pentru dezvoltarea de aplicaii
Web:
Aplicaii complexe.
Aplicaii portabile.
Aplicaii scalabile.
Aplicaii sigure.
Aplicaii modulare.
Aplicaii integrabile uor cu tehnologii anterioare (legacy).
Colecie de specificaii respectate de:
Serverele compatibile JEE.
Aplicaiile JEE.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 17
Specificaii
API i biblioteci care unific programarea
aplicaiilor distribuite complexe:
JDBC pentru acces la baze de date SQL.
JMS pentru mesagerie.
JNDI pentru registre (directoare) de nume.
JAX-WS i JAX-RS pentru servicii Web.
JTA pentru tranzacii.
JPA pentru persisten.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 18
Specificaii
Componente standard ale aplicaiilor Web:
Servlei.
Pagini JSP.
Biblioteci de tag-uri.
Module EJB (Enterprise Java Beans).
Portlei.
Conectori.
Servicii care trebuie asigurate de ctre un server
de aplicaii (container de aplicaii Web).
Fiiere de configurare (XML).
Structura arhivelor ce conin aplicaii Web.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 19
Aplicaii Web JEE
Modelul 3-tier
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 20
Aplicaii Web JEE
Modelul n-tier
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 21
Nivelul Web (prezentare)
Preia cererile client i le transmite nivelului
urmtor.
Tehnologiile JEE folosite pe nivelul Web sunt:
Servlei.
JSP (Java Server Pages) i biblioteci de taguri JSP.
JSF (Java Server Faces).
JSF Facelets.
Limbajul unificat de expresii (Unified Expression Language).
Clase JavaBeans folosite n paginile JSP i JSF.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 22
Nivelul Business (logic)
Partea de logic a aplicaiei (compune
rspunsuri).
Tehnologiile JEE folosite pe nivelul Business sunt:
Componente EJB (Enterprise Java Beans).
Servicii Web de tip REST.
Furnizori / clieni de servicii Web SOAP.
Entiti persistente JPA (Java Persistence API).

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 23
Nivelul de date
Partea de lucru cu date persistente (externe).
Tehnologiile JEE folosite pe nivelul de date sunt:
JDBC (Java DataBase Connectivity), integreaz limbajul SQL n
Java.
JPA (Java Persistence API).
Java EE Connector Architecture, pentru cuplare cu produse
non-JEE.
JTA (Java Transaction API), pentru utilizare de tranzacii.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 24
Crearea de aplicaii Web JEE
Lucrul n linie de comand:
ant, maven.
Folosire IDE:
NetBeans include:
o Biblioteci.
o Server de aplicaii (GlassFish).
o Server de baze de date (Derby).
o Exemple.
Dup finisarea aplicaiei se face deploy pe
serverul real.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 25
Enterprise Java Beans
Componente executate sub controlul
containerului JEE.
EJB: clas Java care respect anumite interfee
pentru metodele apelate de container.
Trei tipuri de clase EJB:
EJB sesiune (Session EJB).
EJB entitate (Entity EJB) mai rar folosite (ORM).
EJB mesaj (Message EJB).
Depanare EJB:
Numai dup instalarea n container (pe server!).

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 26
Alternative la JEE
Containere lightweight (Spring Framework).
Compatibilitate JEE (Seam).
Cloud Computing (Google Application Engine).
Platforma .NET.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 27
Servlei
Realizeaz trecerea de la CGI la Java.
Servlet clas (component) Java care:
Primete i interpreteaz cererile HTTP.
Genereaz coninut dinamic.
Transmite rspunsul (pagin HTML) ctre browser.
Este gestionat de un container de servlei.
Container (servlet engine):
Extensie server Web care asigur funciile cerute de servlei.
Transform cererea HTTP de la client ntr-un obiect de tip
HTTPServletRequest, transmis la servlet.
Transform obiectul HTTPServletResponse creat de servlet n
rspuns HTTP, transmis la client.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 28
Funcionare

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 29
Tratare cerere
Containerul de servlei face urmtoarele aciuni:
Dac nu exist obiect servlet n memorie:
o ncarc clasa servlet.
o Instaniaz clasa (creeaz un obiect servlet).
o Apeleaz metoda init din servlet pentru iniializri.
Apeleaz metoda service (doGet sau doPost) din servlet:
o Argumente: obiect cerere i obiect raspuns (completat de metoda
service).

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 30
Metode service
doGet, doPost, ...
Realizeaz funciile servletului:
Extrag informaii din obiectul cerere.
Acceseaz resurse externe (fiiere, baze de date).
Completeaz rspunsul cu informaiile obinute.
Metode HttpServletRequest pentru extragere
parametri:
Valoare parametru cu nume cunoscut:
o String getParameter (String name)
Iterator pe lista cu numele tuturor parametrilor din cerere:
o Enumeration getParameterNames()

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 31
Exemplu
Extragere parametru cu numele user din cerere
GET (http://localhost:8080/hello?user=me)

out.print (<h1>Hello );
out.print (request.getParameter(user));
out.println (</h1>);


08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 32
Hello World!
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(text/html);
PrintWriter out = response.getWriter();
out.println (<html>);
out.println (<body>);
out.println (<h1>Hello World!</h1>);
out.println (</body>);
out.println (</html>);
}
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 33
Scope Objects
Patru obiecte comune accesibile servleilor dintr-
o aplicaie:
Web Context: accesibil tuturor componentelor dintr-un context
(aplicaie)
Session: accesibil componentelor dintr-o sesiune client.
Request: accesibil componentelor care trateaz o cerere.
Page: accesibil paginii JSP care a creat obiectul.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 34
MVC
Servlet n context MVC: controller.
O aplicaie real: mai muli servlei, dedicai.
E necesar un servlet special, dispecer:
Selecteaz un alt servlet, pe baza cererii.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 35
Servlet dispecer
public class Servlet1 extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws Exception {

RequestDispetcher rd =
request.getRequestDispetcher(/Servlet2);
rd.forward(request,response); // ctre Servlet2

}
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 36
Filtre
Se interpun ntre servlet i cerere/rspuns.
Permit prelucrri ale cererii/rspunsului.
Exemple de filtre:
Autentificare.
Compresie.
Jurnalizare.
Alte componente:
Clase ajuttoare (helpers).
Interceptori.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 37
Etape dezvoltare aplicaie
Etape:
Scrierea codului pentru componentele Web.
Scrierea descriptorului de instalare (fisier XML).
Compilarea componentelor i claselor auxiliare folosite.
mpachetarea fiierelor aplicaiei ntr-o arhiv war (opional).
Instalarea aplicaiei pe server
o Poate fi static (server oprit) sau dinamic (server pornit).
o Poate fi fcut:
Cu utilitarul ant i build.xml.
Prin copiere structur directoare n directorul din server pentru aplicaii
Web.
Prin copiere fiier war n directorul din server pentru aplicaii Web.
Printr-un utilitar de administrare (de tip Tomcat Manager).

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 38
O aplicaie Web conine:
Componente Web.
Resurse statice (imagini, javascript, css).
Clase i biblioteci auxiliare (helper).
Biblioteci de tag-uri.
Descriptor de instalare pentru configurarea aplicatiei pe server.
Structura de directoare
impus de specificaii
(simplific referinele
ntre componente).
Organizare
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 39
Directorul cu sursele are de obicei structur
diferit fa de cea impus (war).
Sunt necesare operaii:
Creare/tergere directoare.
Creare/tergere fiiere.
Compilare.
Copiere fiiere/directoare.
Aici intervin utilitarele (ant, maven, IDE).

Organizare
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 40
Numele directorului asociat cu context-path din
URI.
La arhivare se adaug:
Directorul META-INF, cu fiierul manifest.mf.
Eventual fiierul de configurare context.xml.
Se recomand gruparea resurselor (imagini,
javascript, css) n directoare dedicate.
Fiierele HTML i JSP sunt direct accesibile
clienilor.
Organizare
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 41
Exemplu web-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">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 42
Java Server Pages
Servletul poate conine (prea) multe linii cu
instruciuni de afiare tag-uri HTML (out).
Rezolvare: se includ fragmente Java ntr-un
ablon HTML (nu invers!).
O pagin JSP extinde o pagin HTML (ablon) cu
fragmente de cod Java.
Codul Java inclus ntre tag-uri <% i %>.
Folosete JavaBean (metode get i set pentru acces la
proprietile clasei).
Pagina JSP e compilat automat ntr-un servlet, care se ocup
de scrierea codului HTML.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 43
JSP
<jsp:useBean />
Instaniaz o clas JavaBean.
Atribuie un identificator acestui obiect, folosit n alte tag-uri.
Tag-uri de acces la proprieti:
<jsp:setProperty />
<jsp:getProperty />
Exist numr mare de taguri predefinite
(bibliotec de tag-uri de baz).
Se pot defini alte biblioteci de tag-uri.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 44
JSP
<%@ page import="hello.NameHandler" %>
<jsp:useBean id="mybean" scope="page class="hello.NameHandler" />
<jsp:setProperty name="mybean" property="*" />
<html>
<head><title>Hello, User</title></head>
<table border="0" width="700">
<tr>
<td width="150"> &nbsp; </td>
<td width="550><h1>My name is Duke. What's yours?</h1></td>
</tr>
<tr>
<td width="150" &nbsp; </td>
<td width="550">
<form method="get">
<input type="text" name="username" size="25><br>
<input type="submit" value="Submit">
</form>
</td>
</tr>
</table>
<%
if ( request.getParameter("username") != null ) {
%>
<%@ include file="response.jsp" %>
<%
}
%>
</body>
</html>
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 45
response.jsp
<table border="0" width="700">
<tr>
<td width="150"> &nbsp; </td>
<td width="550">
<h1>Hello, <jsp:getProperty name="mybean"
property="username" />!
</h1>
</td>
</tr>
</table>
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 46
Clasa Java
package hello;
public class NameHandler {
private String username;
public NameHandler() {
username = null; }
public void setUsername(String name) {
username = name;
}
public String getUsername() {
return username;
}
}
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 47
Alt exemplu
Vine mpreun cu Tomcat.
Joc de ghicire.
De analizat...
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 48
Observaie
Intercalarea Java HTML nu e recomandat.
Aplicaiile MVC:
Logica e n clase controller.
Prezentarea (view) n pagini HTML sau JSP.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 49
Etape de via
Ciclul de via al unei pagini JSP:
Dac nu exist un obiect servlet pentru pagina JSP, atunci:
o Se ncarc clasa servlet asociat paginii.
o Se instaniaz clasa servlet.
o Se fac iniializri prin apelul metodei jspInit.
Containerul apeleaz metoda _jspService (corespunde
metodei service dintr-un servlet) transmindu-i ca
parametri obiectul cerere (HTTP) i obiectul rspuns.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 50
Oferta JSP
JSP pune la dispoziie:
Marcaje predefinite (tag-uri JSP) pentru legare la secvene Java
dintr-un document HTML.
Posibilitatea de a defini noi marcaje utilizabile n pagini JSP.
Un limbaj cu expresii (EL=Expression Language) pentru acces la
obiecte Java.
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 51
Elementele componente
Directive
Controleaz modul n care containerul traduce i execut pagini
JSP.
Exemple:

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>

<%@ taglib uri="/functions" prefix="f" %>
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 52
Elementele componente
Scriptlets
Secvene de cod Java inserate n pagin.
Exemple:

<% for (int i=0;i<5;i++) {%> Hello <br> <% } %>
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 53
Elementele componente
Expresii EL
Exemple:

${localeString}

<c:set var="selectedLocaleString"
value="${param.locale}" />

<c:forEach var="localeString"
items="${locales.localeNames}"> ... </c:forEach>

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 54
Elementele componente
Marcaje standard JSP:
Pentru instaniere de clase JavaBeans:
<jsp:useBean id="date" class="mypkg.MyDate"/>

Pentru apel de metode din clase JavaBeans:
<jsp:setProperty name="date" property="locale"
value="${locales.selectedLocale}"/>

Pentru apel de metode din Servlet API:
<jsp:include >
<jsp:forward >

Marcaje definite de programatori
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 55
Elementele componente
Notaia ${var}: include ntr-o constant ir
valoarea variabilei cu numele var.
Poate apare n textul static (HTML) i n atribute ale marcajelor
standard sau definite de utilizatori.
Este permis i notaia ${expr}: obine valoarea
unei expresii (pentru includerea ei ntr-un text
static sau n atribute de marcaje).
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 56
Obiecte implicite
Obiecte generale:
servletContext: contextul servlet i componente din aplicaie.
session: sesiune servlet.
request: cerere primit de servlet.
response: rspuns trimis de servlet.
Obiecte de tip map (memoreaz perechi nume-
valoare):
pageScope: valabile pentru pagina curent.
requestScope: valabile pentru o cerere.
sessionScope : valabile pentru sesiunea curent.
applicationScope: valabile pentru ntreaga aplicaie.

08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 57
Reutilizare JSP
Pentru pagini complete sau fragmente, directiva:
<%@ include file="filename"%>
Se folosete doar la nceput sau sfrit de pagin.
n interiorul paginii: Template Tag Library.
Permite separarea prilor comune.
Template: pagin JSP cu jaloane (placeholders).
08.10.2013 Dezvoltarea aplicaiilor Internet (2013 2014) 58

S-ar putea să vă placă și