![]() |
![]() |
Accueil > Intranet Michel Buffa > Cours composants distribués pour l'entreprise / EJB 2012-2013 > TP2 EJB : Ecriture d'un gestionnaire de comptes bancaire
TP2 EJB : Ecriture d'un gestionnaire de comptes bancaireDe $1Table des matièresIntroductionDans ce TP, contrairement au TP1, nous allons écrire une application de gestion de comptes bancaires, mais sans partir de tables pré-existantes. Vous utiliserez un entity bean CompteBancaire et un session bean GestionnaireDeCompteBancaires. Le TP comporte également l'écriture de servlets et de pages jsp pour se connecter, s'identifier, accèder à ses comptes, transférer de l'argent. Vous travaillerez sur une nouvelle base de données ! Afin de ne pas "casser" celle qui est livrée en exemple (jdbc/sample...) Création d'une base de donnée "Banque"Netbeans comprend un o Donnez ensuite un nom à votre base. Vous DEVEZ OBLIGATOIREMENT donner un login/password. Pour les M2 Nice : NE CHOISISSEZ PAS LE MEME NOM QUE MOI, Prenez un nom qui contient vos noms de famille ou de binome car ce TP sera à me rendre et il sera noté ! Comme j'importerai vos bases de données, elles doivent toutes avoir un nom différent ! Votre base doit apparaître dans la liste "Java DB". Faites clic droit/Se connecter Vous devriez voir votre base dans la liste, et vous devriez pouvoir commencer à administrer votre base:. Ne faites rien pour le moment, car dans ce projet les tables vont êtres crées à partir des classes Java des entity beans ! Ecriture d'un entity bean CompteBancaireVous allez créer un nouveau projet, à la manière du TP1. Donnez-lui un nom qui comporte votre nom de binome ! Au lieu de créer un entity bean à partir d'une table (Classe entité provenant de la base de données...), vous ferez une simple création d'entity bean (Classe entité...). Dans la création de la "Persistence Unit", vous indiquerez bien sur la nouvelle source de données que vous venez de créer : Vérifier qu'un fichier sun-resource.xml est apparu dans l'arbre du projet ejb, sous "server resources". Dans le code source de l'entity bean, vérifier qu'une propriété est le numéro d'identification (la clé primaire, déclaré par l'annotation @Id), qui est en mode auto-incrément: (déclaré par l'annotation @GeneratedValue(strategy=GenerationType.AUTO) Modifier l'entity bean CompteBancaire afin que chaque compte bancaire possède :
Comme dans le cours, ajouter une méthode pour initialiser le compte, pour retirer de l'argent, pour en ajouter et pour consulter le solde. Ce n'est pas grave si il n'y a pas de table pour les comptes bancaires, vous verrez que le serveur la créera automatiquement lors du premier déploiement du bean CompteBancaire. Compilez. Vérifiez qu'il n'y a pas d'erreurs. Ecriture d'un session bean façade : GestionnaireDeCompteBancaireVous allez maintenant écrire un session bean GestionnaireDeCompteBancaire, ce sera un session bean stateless. Ce session bean va proposer pour le moment deux fonctionalités :
Vous ajouterez une méthode creerComptesTest() qui va créer quatre comptes, pour John, Paul, Georges et Ringo, avec les sommes suivantes. Ne faites pas attentions aux numéros de comptes, vous n'avez pas à les préciser puisque vous êtes en clé primaire générée automatiquement. public void creerComptesDetest() { creerCompte("John Lennon", 150000); creerCompte("Paul Mac Cartney", 950000); creerCompte("Ringo Starr", 20000); creerCompte("Georges Harrisson", 100000); } Ecriture d'une servlet comptes et de jsps associéesRappels:
Inspirez vous de ces deux bouts de code issus du TP1 :
package tp1; import java.io.IOException; import java.util.Collection; import javax.ejb.EJB; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name="ServletTest", urlPatterns={"/ServletTest"}) public class ServletTest extends HttpServlet { @EJB private HelloWorldLocal helloWorld; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("insert"); if(name!=null) { helloWorld.addManufacturer(name); } Collection manufacturers = helloWorld.getAllManufacturers(); request.setAttribute("Manufacturers", manufacturers); RequestDispatcher dp = request.getRequestDispatcher("DisplayManufacturers.jsp"); dp.forward(request, response); } ..... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {..... ...... protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {..... }
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>List of Manufacturers</h1> <ul> <c:forEach var="u" items="${requestScope['Manufacturers']}"> <li>${u.name}</li> </c:forEach> </ul> </body> </html> Vous devrez utiliser ce type de conception pour votre application, fini les jsps et les servlets sauvages ! Travail à effectuer:
Ajout de nouvelles fonctionalitésVous allez maintenant écrire ce qu'il faut pour proposer le transfert d'argent d'un compte bancaire à l'autre.
Mots clés:
|
Powered by MindTouch Deki Open Source Edition v.8.08 |