Académique Documents
Professionnel Documents
Culture Documents
1. Tehnologia Servlet
Servlet-ii sunt componente de bază pentru programarea Web in platforma Java, care crează
pagini Web dinamice, ca răspuns la cererile HTTP ale clienților.
Aceeași funcționare a servlet-ului o obținem și direct din browser, folosind adresa de mai sus.
Dacă cererea clientului conține parametrul username, atunci se apelează servlet-ul /response,
care adaugă în document salutul Hello <username>
1
Felicia Ionescu - Aplicații distribuite
Servlet-ul hello2/greeting redefinește metoda doGet() care creează un formular HTML, citește
parametrul “username” din cerere și, dacă username este diferit de null, apelează servlet-ul
/hello2/response care adaugă un fragment HTML cu mesajul Hello <username>, apoi finalizează
documentul de răspuns și închide fluxul de ieșire.
În formular, comanda Submit (butonul submit) generează tot un mesaj HTTP Get, la aceeași
adresă, deci se reafișează documentul.
Dacă se modifică fișierele sursă, atunci prooiectul trebuie recompilat și re-deploy-at cu
comanda Run → Run Project (hello2) (din toolbar) sau cu una din comenzile de context (click dreapta
pe numele proiectului) Run sau Deploy.
Servlet-ul ramane deploy-at în serverul Glassfish până când este undepoy-at. Faptul că este
deploy-at se vede în tab-ul Applications sub Servers/GlassFish din pagina Services din fereastra
Navigator din NetBeans.
Pentru crearea unei aplicații (propiect) Web folosind servlet-i în NetBeans se parcurg următorii
pași:
A. Se crează un proiect nou - cu comanda File → New Project
(1) Se alege categoria si tipul proiectului:
2
Felicia Ionescu - Aplicații distribuite
3
Felicia Ionescu - Aplicații distribuite
B. Se adaugă un servlet în proiect - cu comanda New → Servlet din meniul de context (click
dreapta pe numele proiectului helloservlet).
(1) Se alege Categoria și tipul proiectului.
(2) Se setează numele clasei servlet-ului și package-ul acestuia:
4
Felicia Ionescu - Aplicații distribuite
5
Felicia Ionescu - Aplicații distribuite
Pentru crearea unei aplicații (propiect) Web folosind pagini JSP în NetBeans se parcurg
următorii pași:
A. Se creează un nou proiect - cu comanda File → New Project
(1) Se alege categoria și tipul proiectului:
6
Felicia Ionescu - Aplicații distribuite
7
Felicia Ionescu - Aplicații distribuite
Pagina JSP creată conține numai un mesaj Hello World și arată astfel:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body> <h1>Hello World!</h1> </body>
</html>
C. Se adaugă o clasa pentru bean-ul StringBean cu comanda de context New -> Java Class
(1) Se selectează Categoria și tipul proiectului
(2) Se seteaza numele si locatia clasei și se dă Finish:
8
Felicia Ionescu - Aplicații distribuite
9
Felicia Ionescu - Aplicații distribuite
Tehnologia JavaServer Faces (JSF) permite dezvoltarea aplicațiilor Web cu conținut dinamic și
interfață grafică, folosind componente inserate în pagini Web cu ajutorul tag-urilor definite în mai
multe biblioteci.
3.1. Exemplu – hello1 din JavaEE7TutorialExamples
Acest exemplu funcționează aproximativ la fel ca exemplul hello2, cu diferența că este creeat în
tehnologia JSF.
Se deschide proiectul JavaEE7TutorialExamples/web/jsf/hello1 și se executa cu comanda de
context (click dreapta pe numele proiectului) Run sau Deploy. După deploy în serverul GlassFish, se
poate accesa din browser (la adresa http://localhost:8080/hello1/)
Studiați părțile componente ale proiectului. Subdirectorul Web Pages conține două pagini Web
în tehnologia Facelets: index.xhtml și response.xhtml, subdirectorul WEB-INF, care conține fișierul de
configurare web.xml și subdirectorul resources, care conține un subdirector images cu fișierul
duke.waving.gif. Subdirectorul Source Packages conține package-ul javaeetutorial.hello1 cu un singur
fișier, Hello.java, care este un bean de suport gestionat de container (bakeing bean).
Pagina index.xhtml conține un formular cu o imagine grafică, un header, un câmp de intrare și
două butoane de comandă.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head> <title>Facelets Hello Greeting</title> </h:head>
10
Felicia Ionescu - Aplicații distribuite
<h:body>
<h:form>
<h:graphicImage url="#{resource['images:duke.waving.gif']}"
alt="Duke waving his hand"/>
<h2>Hello, my name is Duke. What's yours?</h2>
<h:inputText id="username"
title="My name is: "
value="#{hello.name}"
required="true"
requiredMessage="Error: A name is required."
maxlength="25" />
<p></p>
<h:commandButton id="submit" value="Submit" action="response" />
<h:commandButton id="reset" value="Reset" type="reset" />
</h:form>
<div class="messagecolor">
<h:messages showSummary="true" showDetail="false"
errorStyle="color: #d20005" infoStyle="color: blue"/>
</div>
</h:body>
</html>
La fel ca pagina index.xhtml, pagina response.xhtml folosește biblioteca JSF HTML Tag
Library și afișează proprietatea name a bean-ului hello folosind o expresie EL(Expression Language)
cu evaluare amânată; acțiunea butonului Back duce la revenirea la pag index.xhtml.
Bean-ul hello conține proprietatea name și este definit în fișierul Hello.java astfel:
package javaeetutorial.hello1;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
11
Felicia Ionescu - Aplicații distribuite
@Named
@RequestScoped
public class Hello {
private String name;
public Hello() { }
public String getName() { return name; }
public void setName(String user_name) { this.name = user_name; }
}
Aplicația este configurată prin fișierul web.xml, pe care NetBeans îl creează automat la creearea
aplicației folosind framework-ul NetBeans.
NetBeans are mai multe posibilități de ajutor pentru dezvoltarea aplicațiilor Java EE. În primul
rând oferă templat-uri pentru diferite categorii și tipuri de aplicații, apoi prezintă posibilitatea de acces
direct din editor la documentația unei clase (Ctrl + Space), posibilită ți de creeare a unor componente
(wizards), de completare cod și importuri, generarea automată a unor fișiere de configurare, în func ție
de tipul aplicației etc. Aceste facilități vor fi prezentate și utilizate în continuare.
12
Felicia Ionescu - Aplicații distribuite
Se poate modifica fișierul web.xml pentru a avea o cale mai simpla in browser:
<url-pattern>*.xhtml</url-pattern>
......
<welcome-file>index.xhtml</welcome-file>
13
Felicia Ionescu - Aplicații distribuite
14
Felicia Ionescu - Aplicații distribuite
La comanda Finish din această fereastră, se generează clasa bean-ului în UserBean.java astfel:
package ghicesteNumarul;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class UserBean {
public UserBean() { }
}
(3) Se completează clasa bean-ului cu implementarea interfeței Serializable, initializarea
variabilei numarAles cu o valoare aleatoare și definirea variabilei proprietății numarGhicit.
După aceasta, se folosește wizard-ul de definire a metodelor de acces la proprietatea definită:
click dreapta în editor, se alege Insert Code și apoi metodele Getter și Setter, care adaugă metodele
respective în clasă:
15
Felicia Ionescu - Aplicații distribuite
(2) Se setează numele și locația fișierului și tipul paginii (Facelet sau JSP):
16
Felicia Ionescu - Aplicații distribuite
17
Felicia Ionescu - Aplicații distribuite
(3b) Studiați templat-urile Facelets (din tutorial). Dezvoltați o aplicație în care creeați și utilizați
un template Facelets. Puteti urmări pașii de execuție din documentația https://netbeans.org/kb/
docs/web/jsf20-support.html (Facelets Template Wizard, Facelets Template Client Wizard).
18
Felicia Ionescu - Aplicații distribuite
19