Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application.



Documents pareils
Web Tier : déploiement de servlets

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

JavaServer Pages (JSP)

Groupe Eyrolles, 2005, ISBN :

Création d un service web avec NetBeans 5.5 et SJAS 9

Les architectures 3-tiers Partie I : les applications WEB

Documentation CAS à destination des éditeurs

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Aspects techniques : guide d interfaçage SSO

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Architecture Orientée Service, JSON et API REST

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Création d une application JEE

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Alfstore workflow framework Spécification technique

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

1. Installation d'un serveur d'application JBoss:

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Application web de gestion de comptes en banques

Module BD et sites WEB

Programmer en JAVA. par Tama

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Mise en œuvre des serveurs d application

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

2 Chapitre 1 Introduction

Projet de programmation (IK3) : TP n 1 Correction

Etude et développement d un moteur de recherche

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Programmation Par Objets

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Une introduction à la technologie EJB (2/3)

Java - MySQL. Code: java-mysql

Dis papa, c est quoi un bus logiciel réparti?

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Corrigé des exercices sur les références

RMI le langage Java XII-1 JMF

Architectures client/serveur

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

Package Java.util Classe générique

- Rapport de stage Étude de solutions pour l intégration de fonctionnalités

Développement Logiciel

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Cours en ligne Développement Java pour le web

Java Naming and Directory Interface

Compte Rendu d intégration d application

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Flux de données Lecture/Ecriture Fichiers

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Guide d implémentation Interface avec la plateforme de paiement

Auto-évaluation Aperçu de l architecture Java EE

Remote Method Invocation (RMI)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutoriel d installation de Hibernate avec Eclipse

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

TP1 : Initiation à Java et Eclipse

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Cloud. Définition? 08/11/2012. James Urquhart The Wisdom of Clouds

10. Base de données et Web. OlivierCuré

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Applet pour visualiser les variables «automate» notifiées

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Le développement d applications Web

Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

Introduction à HTTP. Chapitre HTTP 0.9

TP JAVASCRIPT OMI4 TP5 SRC

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

OpenPaaS Le réseau social d'entreprise

Le développement d applications Web. François Charoy Pascal Molli Pascal Urso

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Introduction à la plateforme J2EE

Formation en Logiciels Libres. Fiche d inscription

Le Modèle de Sécurité dans JAVA

Programmation Internet en Java

Rafraichissement conditionné d'une page en.net

Chapitre 10. Les interfaces Comparable et Comparator 1

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Gestion distribuée (par sockets) de banque en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

INITIATION AU LANGAGE JAVA

Auto-évaluation Programmation en Java

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Premiers Pas en Programmation Objet : les Classes et les Objets

PDO : PHP Data Object 1/13

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Refonte front-office / back-office - Architecture & Conception -

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Java pour le Web. Cours Java - F. Michel

Composants Logiciels. Le modèle de composant de CORBA. Plan

Transcription:

Introduction Nous allons parler, dans ce document consacré aux architectures multi-tiers en environnement J2EE, de 3 des cinq couches les plus représentatives. Faisons tout d'abord un petit rappel sur ces cinq couches. Browser Présentation Logique métier Middleware Persistance Browser Cette partie est bien souvent non représentative de l architecture mais je me permets de la située car il n est pas exclu que celle-ci contienne une partie applicative communément appelée «Tests de premier niveau». Les tests de premier niveau consiste principalement en la vérification du contenu des formulaires de saisie. Ils permettent de s assurer que l ensemble des champs obligatoires a bien été renseigné par exemple. Cependant, et nous le verrons dans la suite, cette série de test DOIT faire partie de la couche de présentation. En effet, il n est pas exclu que l utilisateur final décide de désactiver les fonctionnalités JavaScript de son browser. Une autre utilisation de cette couche est la représentation des pages dynamiques grâce, entre autre, au format DHTML. Cette partie est généralement prise en charge par des «Web Agency» et sort donc du contexte de ce document. Présentation Cette couche prend en charge la logique de navigation Elle met souvent en œuvre les technologies JSP/Servlets. Logique métier Implémentée sous forme de JavaBean ou EJB, c est dans cette couche que l on retrouve l ensemble des traitements d une application. Middleware Cette partie de l architecture couvre les connexions avec les autres systèmes ou les bases de données (Connector, JMS, JDBC). Persistance Partie sur laquelle nous ne nous étendrons pas non plus, la persistance. Elle se compose souvent d une ou de plusieurs bases de données de type SGBDR, SGBDO, LDAP, Présentation La couche de présentation assure la logique de navigation mais aussi la gestion des droits de l utilisateur (authentification, droits). Elle se compose en règle générale de composants de type JSP pour la représentation graphiques des informations et de Servlets pour les contrôles. Aucun traitement n est à implémenter dans cette couche. Le diagramme de collaboration ci-dessous donne un aperçu rapide de l architecture technique a mettre en œuvre afin de respecter le Modèle Vue Contrôleur (MVC)

: Controler 1: request 2: : Utilisateur 5: response 3: forward : Page 4: : JavaBean 1. L utilisateur émet une requête auprès du serveur en utilisant la méthode POST ou GET. 2. Le contrôleur accède aux informations demandées au travers d un JavaBean. 3. Le contrôleur transmet le JavaBean à la page JSP chargée de la mise en forme du document. 4. La page JSP utilise les informations du JavaBean transmit. 5. La page JSP met en forme les informations et retourne la réponse à l utilisateur. Afin de mieux comprendre cette architecture et surtout la manière de la mettre en œuvre, nous allons réaliser un premier exemple qui a pour objectif d afficher une page d accueil après que l utilisateur se soit authentifier sur le site. Commençons tout d abord par le JavaBean. Ce dernier acceptera les connexions des utilisateurs enregistrés dans le fichier «users.properties» dont voici le format. # users.properties # # login = firstname ; lastname ; userid ; password # alwin=valère;viandier;124;a8b22 pat=patricia;roger;584;patoune La classe User est définie comme suit : package exo1; import java.util.properties; import java.io.fileinputstream; import java.util.stringtokenizer; import java.util.nosuchelementexception; public class User { private String firstname; private String lastname; private int userid; public User() { public String getfirstname() { return firstname; public String getlastname() { return lastname;

public int getuserid() { return userid; public void connect(string user, String password) throws Exception { // Contrôle des paramètres en entrée if( user == "" user == null password == "" password == null) { throw new Exception("Utilisateur ou mot de passe non renseigné!"); else { // Lecture du fichier des utilisateurs users.properties Properties prop = new Properties(); FileInputStream in = new FileInputStream("users.properties"); prop.load(in); String puser = prop.getproperty(user); if( puser == null) throw new Exception("Utilisateur inconnus"); StringTokenizer iuser = new StringTokenizer(pUser,";"); String ifirstname = iuser.nexttoken(); String ilastname = iuser.nexttoken(); String iuserid = iuser.nexttoken(); String ipassword = iuser.nexttoken(); if (ipassword.equalsignorecase(password)) { this.firstname = ifirstname; this.lastname = ilastname; this.userid = Integer.parseInt(iUserId); else throw new Exception("Mot de passe invalide"); /** Classe de test */ public static void main(string[] args) { User user = new User(); try { user.connect("pat","patoune"); System.out.println("Utilisateur N " + user.getuserid()+" connecté"); System.out.println(user.getFirstName() + " " + user.getlastname()); catch (Exception e) { System.out.println(e.getMessage()); Ce JavaBean est composé des attributs «firstname, lastname et userid». De plus, il dispose d une méthode de connexion «connect» qui a la charge de vérifier les informations transmises et de recherche l utilisateur. Nous constatons que ce JavaBean est en lecture seule car il ne dispose pas d accesseurs de type «setxxxx». Ainsi, nous nous assurons que seule la méthode «connect» est en mesure d initialiser les propriétés du Bean. Nous allons utiliser une page d index (index.jsp) qui dispose d un formulaire d identification. Le bouton de soumission du formulaire donnera la main au servlet contrôleur (ExoLogin) qui auras la charge d invoquer le Bean puis de router la requête vers une page d accueil personnalisée (accueil.jsp).

Index.jsp <HTML> <BODY> <H1>Identification</H1> <FORM method="post" action="/servlet/exo1.exologin"> User name : <INPUT TYPE="text" NAME="userName" value="pat"><br> Password : <INPUT TYPE="password" NAME="password" value="patoune"><br> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Submit"> <INPUT TYPE="RESET" VALUE="Reset"> </FORM> </BODY> </HTML> accueil.jsp <jsp:usebean id="user" class="exo1.user" scope="request"/> <HTML> <HEAD><TITLE>accueil</TITLE></HEAD> <BODY> Bonjour <%= user.getfirstname() %> <%= user.getlastname() %> </BODY> </HTML> ExoLogin.java package exo1; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import exo1.*; public class ExoLogin extends HttpServlet { private static final String CONTENT_TYPE = "text/html"; private User user; /**Initialize global variables*/ public void init(servletconfig config) throws ServletException { super.init(config); /**Process the HTTP Get request*/ public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { dopost(request,response); /**Process the HTTP Post request*/ public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // récupération des paramètres pusername et ppassword du formulaire String pusername = request.getparameter("username"); String ppassword = request.getparameter("password"); System.out.println("userName:" + pusername + "\npassword:" + ppassword ); // on initialise le JavaBean user = new User(); try { // utilisation de la méthode de connexion 'connect' du JavaBean user.connect(pusername,ppassword); // On transmet le JavaBean au context afin d'être récupéré par la page JSP request.setattribute("user",user); // On re-route l'appel vers la page d'accueil JSP gotopage("/src/exo1/accueil.jsp",request,response); catch (Exception e) { response.setcontenttype(content_type);

PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<head><title>erreur</title></head>"); out.println("<body>"); out.println("<p>erreur : " + e.getmessage() +"</p>"); out.println("</body></html>"); /**Clean up resources*/ public void destroy() { private void gotopage(string adress, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(adress); dispatcher.forward(request,response); Les sources du projet Jbuilder4 sont à votre disposition! Une remarque cependant sur l utilisation de Jbuilder4 dans l exécution de ce type d application via l EDI! Il arrive parfois que la connexion se perde entre deux appel, je préconise donc de désactiver le browser intégrer à Jbuilder4 en décochant l option project/ project properties / Run / JSP/Servlet / IDE Options / Use integrated browser et en utilisant votre browser standard avec l adresse http://localhost :8080