Les servlets

publicité
Architecture des
systèmes d’information
répartis
L’architecture multi-tiers
Sorina Ionica
1
Présentation du cours
 Répartition



des cours
Cours + TD Services web
Cours + TD JEE
Sécurité web
Contrôle des connaissances



Contrôle continuu
1er CC : le 31 octobre (a confirmer)
Projet
2
Présentation
 J2EE
: norme proposée par Sun
Microsystems qui permet de développer des
applications d’entreprise distribuées
 Définition de standards ouverts permettant de
construire des architectures à base de
services à destination de l’entreprise
 Elaborée sur la base du langage de
programmation et des technologies java.
3
Avantages



Produits qui s’exécutent sur n’importe quel système qui
prenne en charge la plateforme J2EE
Applications portables qui deviennent indépendantes
des fabricants
Architecture fournie par J2EE



J2EE gère multithreading, synchronisation, allocation des
ressources, gestion du cycle de vie
Possibilité pour les développeurs de se concentrer sur les
processus métier
Standardisation => plus grand choix de produits
interopérables + rentabilisation des investissements
4
Avantages



API J2EE faciles à apprendre pour les développeurs
java => augmentation de la productivité
Développements plus rapides => réduction des
délais de mise sur le marché et des coûts de
développement
Chaque composant d’une application peut être
développé indépendamment et réutilisé
5
Composants et conteneurs
J2EE
 Composants




Servlets et JSP
Composants de la couche web s’exécutant dans
un conteneur web
Préparation dynamique du contenu
Traitement et formatage liés à la présentation
 Composants




web
métier
EJB ou beans entreprise
Composants professionnels à gros grain
Gestion des données ou des traitements
S'exécutent dans un conteneur d'un serveur
d'application
6
Architecture multicouche J2EE
Couche client
Conteneur
d'applet
Applet
J2EE
Couche Web
Couche métier
Conteneur Web
Conteneur d'EJB
J2SE
Conteneur
du client de
l'application
Client de
l'application
EJB
JSP
Servlet
JDK
JDK
JDK
Couche SI
Base de
données
7
Composants client
 Applications
client
1. Client léger : applications composées de pages
HTML ; le module d'exécution est un navigateur
2. Client lourd : interface grafique évoluée ;
traitement délégué aux composants métier
 Applets
:
- Petite application qui s'exécute dans le
navigateur (nécessite le Java plug-in)
8
Diversité des types de clients
Serveur J2EE
Client mobile
(téléphone, PDA, …)
SOAP/XML over HTTP
SOAP/XML over HTTP
Couche Web
Conteneur Web
JSP
Client divers hors Java
(.NET, PHP, C, …)
HTTP
Servlet
RMI
Couche métier
Client léger
(Navigateur)
Conteneur d'EJB
RMI
Client riche java
(SWING, SWT)
EJB
EJB
9
Les servlets
10
Les servlets - Présentation (1)

Définition





Programme Java
S'exécute dynamiquement sur le serveur Web
Permet l'extension des fonctions du serveur web
 accès à des bases de données
 transactions d'e-commerce, etc.
Peut être chargé
 automatiquement lors du démarrage du serveur Web
 lors de la première requête du client.
Une fois chargés, les servlets restent actifs dans l'attente
d'autres requêtes du client.
11
Les servlets - Caractéristiques
 Une
servlet est une classe java issue des
classes prédéfinies



javax.servlet.*
javax.servlet.http.*
Créer une sous-classe de
javax.servlet.http.HttpServlet
public class ServletDeBase extends HttpServlet{}
12
Les servlets - Développement
 Surcharger
la méthode adéquate
doGet(HttpServletRequest req, HttpServletResponse res);
doPost(HttpServletRequest req, HttpServletResponse res);


import javax.servlet.*;
import javax.servlet.http.*;
public class ServletDeBase extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException {
// lecture de la requête
// traitements
// envoi de la réponse
}
}
13
Les servlets - cycle de vie
1.
2.
3.
4.
5.
6.
7.
La servlet est chargée au démarrage du serveur ou lors de la
première requête
La méthode init() est invoquée par le conteneur
Lors de la première requête, le conteneur crée les objets Request
et Response spécifiques à la requête
La méthode service() est appelée à chaque requête dans un
nouveau thread. Les objets Request et Response lui sont passés
en paramètre
Grâce à l'objet Request, la méthode service() va pouvoir analyser
les informations en provenance du client
Grâce à l'objet Response, la méthode service() va fournir une
réponse au client
La méthode destroy() est appelée lors du déchargement de la
servlet, c'est-à-dire lorsqu'elle n'est plus requise par le serveur. La
servlet est alors signalée au garbage collector.
14
Les servlets - Développement
•Les contextes
- un contexte = un fichier dans
conf\Catalina\localhost\ServletsTD1.xml
<Context
path="/ServletsTD1"
reloadable="true"
docBase="d:\eclipse\ServletsTD1"
workDir="d:\eclipse\ServletsTD1\work" >
<Logger
className="org.apache.catalina.logger.SystemOutLogger"
verbosity="4"
timestamp="true"/>
</Context>
15
Les servlets - Développement

Déclaration des servlets dans le contexte

Décrire la servlet dans le fichier
D:\eclipse\ServletsTD1\WEB-INF\web.xml
<web-app>
<display-name>Mes servlets</display-name>
<description>
Premières servlets
</description>
<servlet>
<servlet-name>ServletHello</servlet-name>
<servlet-class>ServletsTD1.HelloServlet</servlet-class>
<description>Servlet d'essai</description>
</servlet>
<servlet-mapping>
<servlet-name>ServletHello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
16
Les servlets - Développement

Au niveau du conteneur
Serveur Tomcat
Contexte : TD1
HelloServlet
Browser
HTML
Contexte : Tetris
Apple
t
ChargerScores
Scores
J
D
B
C
MajScores
Client
Serveur
17
Les servlets et les BD
 Connections
aux bases de données via
JDBC
 La connexion reste toujours sur le serveur =>
sécurisation des données
 Connexion dans la servlet OU
 Possibilité de créer des pools de connexion
18
Accès aux données - JDBC
1.Créer une connexion à la base (DataSource)
2.Créer une requête (Statement)
3.Exécuter une requête
4.Traiter les résultats
19
Le JNDI
JNDI (Java Naming and Directory Interface)



Accès aux services de nommage et d’annuaire
Recherche de composants métier dans un
environ. J2EE
Inclut la prise en charge du protocole LDAP
(Lightweight Directory Access Protocol), le service
de nommage de CORBA et le registre RMI
(Remote Method Invocation)
20
Le JNDI (Java Naming and
Directory Interface)
utilisée dans les spécifications de plusieurs API :
JDBC, EJB, JMS, ...
 Deux imports :
import javax.naming.* ;
import javax.naming.directory.* ;

21
Configuration
Declaration de la ressource dans le
fichier
c:\serveur\Tomcat5_5\conf\serveur.xml
<!-- JNDI de la base test -->
<Resource name="base_test"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="500"
username="root"
url="jdbc:mysql://localhost/test?autoReconnect=true"
maxActive="500"
/>
Configuration
Declaration de la ressource dans le
fichier
conf\catalina\localhost\ServletsTD1.x
ml
<Context path="/ServletsTD1"
reloadable="true"
docBase="c:\eclipseworkspace\ServletsTD1"
workDir="c:\eclipseworkspace\ServletsTD1\work" >
<ResourceLink
name="base_test"
global="base_test"
type="javax.sql.DataSource"/>
</Context>
Connexion
Créer un objet de type Context pour
chercher dans le contexte
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds=(DataSource) envCtx.lookup("base_test");
La methode principale de DataSource est
getConnection() :
Connection BD=ds.getConnection();
Statement
Obtenir un objet implémentant l'interface
Statement
Connection BD = ...
Statement stmt = BD.createStatement();
Exécuter une requête
String s = "SELECT * FROM personne";
ResultSet r = stmt.executeQuery(s);
Requêtes pour la mise à jour
Requêtes de mise à jour et de création
e.g. update, drop, create
Statement stmt = conn.createStatement();
int i = stmt.executeUpdate("DROP TABLE
personne");
Observation :
retournent un nombre
26
JDBC
Traitement des résultats
ResultSet r = stmt.executeQuery(s);
while (r.next()) {
...
out.println(r.getString("nom "));
out.println(r.getString("prenom"));
...
}
TD1 : Mise en place de
l'environnement
 Allez
sur la page du cours :
http://home.mis.u-picardie.fr/~ionica/ASI.htm
Installation
- Serveur d'application qui execute le code et
reponde aux requetes : Apache-Tomcat
-Platforme de developpement : Eclipse
-JDK : bibliotheques + outils compilation
28
Téléchargement