tp de synthése struts

14
TP Struts M.Youssfi TP STRUTS Authentification, Ajout et Affichage des utilisateurs à partir d’une base de données MySQL A- Structure de la base de données (voir Tp précédent) Une seule table utilisateurs : B-Projet : 2- Créer un nouveau projet Tomcat nommé ProjSt1 3- Copie des fichiers Struts. (récupérer le dossier struts- 1.2.7-lib) o Dans le répertoire lib de votre projet, copier tous les fichiers.jar du dossier struts-1.2.7-lib. Ces fichiers constituent l’api struts. o Copier également le connecteur MySQL o Dans le répertoire WEB-INF, copier tous les fichier.tld du dossier struts-1.2.7-lib. Ces fichiers contiennent des librairies de tag que nous utiliserons dans les pages JSP. 1 / 14

Upload: didataze

Post on 12-Nov-2014

1.039 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: TP de synthése Struts

TP Struts M.Youssfi

TP STRUTS

Authentification, Ajout et Affichage des utilisateurs à partir d’une base de données MySQL

A- Structure de la base de données (voir Tp précédent)

Une seule table utilisateurs :

B- Projet :2- Créer un nouveau projet Tomcat nommé ProjSt13- Copie des fichiers Struts. (récupérer le dossier struts-1.2.7-lib)

o Dans le répertoire lib de votre projet, copier tous les fichiers.jar du dossier struts-1.2.7-lib. Ces fichiers constituent l’api struts.

o Copier également le connecteur MySQLo Dans le répertoire WEB-INF, copier tous les fichier.tld du dossier struts-1.2.7-

lib. Ces fichiers contiennent des librairies de tag que nous utiliserons dans les pages JSP.

-

1 / 12

Page 2: TP de synthése Struts

TP Struts M.Youssfi

o Copier également les deux fichiers web.xml et struts-config.xml dans le repertoire WEB-INF

o Déclarer les fichiers .jar dans le classpath du projet : Sélectionner votre projet Project>properties Sélectionner la catégorie java build path Cliquer sur le bouton Add JARs… Parcourez votre projet pour atteindre votre répertoire lib et puis

sélectionnez tous les fichiers du dossier lib et ajoutez les au classpath en validant le bouton OK.

C- Modèle.

2 / 12

Page 3: TP de synthése Struts

TP Struts M.Youssfi

Classe Utilitaire

package mod.app;import java.sql.*;public class Utilitaire {

private static Connection conn;static{

try{ Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/BaseUsers","root","");

}catch(Exception e){

e.printStackTrace();}

}public static Connection getConnection(){

return conn;}

} Classe Utilisateur.java

package mod.app;

public class Utilisateur { private Integer idUser; private String login; private String pass; private String email; private String ville;public String getEmail() {

return email;}public void setEmail(String email) {

this.email = email;}public Integer getIdUser() {

return idUser;}public void setIdUser(Integer idUser) {

this.idUser = idUser;}public String getLogin() {

return login;}public void setLogin(String login) {

this.login = login;}public String getPass() {

return pass;

3 / 12

Page 4: TP de synthése Struts

TP Struts M.Youssfi

}public void setPass(String pass) {

this.pass = pass;}public String getVille() {

return ville;}public void setVille(String ville) {

this.ville = ville;}}

Classe GestUsers.java

Cette classe contient les méthodes métier qui permettent :- d’ajouter un nouvel utilisateur- de retourner un utilisateur sachant son login et son mot de passe- de retourner toutes les utilisateurs dans un vecteur.

package mod.app;import java.sql.*;import java.util.Vector;public class GestUsers { public Utilisateur loadUser(String login, String pass){ Connection conn=Utilitaire.getConnection(); Utilisateur u=null; try {

PreparedStatement ps=conn.prepareStatement("select * from utilisateurs where login=? and pass=?");

ps.setString(1,login);ps.setString(2,pass);ResultSet rsUser=ps.executeQuery();if(rsUser.next()){

u=new Utilisateur();u.setIdUser(new Integer(rsUser.getInt("ID_USER")));u.setLogin(rsUser.getString("LOGIN"));u.setPass(rsUser.getString("PASS"));u.setEmail(rsUser.getString("EMAIL"));u.setVille(rsUser.getString("VILLE"));

}

} catch (SQLException e) {e.printStackTrace();

} return u; } public void addUser(String l,String p, String e,String v){ Connection conn=Utilitaire.getConnection(); Utilisateur u=null; try {

PreparedStatement ps=conn.prepareStatement("insert into utilisateurs(LOGIN,PASS,EMAIL,VILLE) values(?,?,?,?)");

ps.setString(1,l);ps.setString(2,p);ps.setString(3,e);

4 / 12

Page 5: TP de synthése Struts

TP Struts M.Youssfi

ps.setString(4,v);ps.executeUpdate();

} catch (SQLException e2) {e2.printStackTrace();

} } public Vector selectAll(){ Connection conn=Utilitaire.getConnection(); Vector users=new Vector(); Utilisateur u=null; try {

PreparedStatement ps=conn.prepareStatement("select * from utilisateurs");

ResultSet rsUser=ps.executeQuery();while(rsUser.next()){

u=new Utilisateur();u.setIdUser(new Integer(rsUser.getInt("ID_USER")));u.setLogin(rsUser.getString("LOGIN"));u.setPass(rsUser.getString("PASS"));u.setEmail(rsUser.getString("EMAIL"));u.setVille(rsUser.getString("VILLE"));users.add(u);

}

} catch (SQLException e) {e.printStackTrace();

} return users; }}

D- Authentification

Nous allons reprendre la même application du premier TP, auquel, on va ajouter la validation. Une modification sera également affectée au modèle, juste pour changer la manière de travailler.

1- Première Vue : Login.jsp

5 / 12

Page 6: TP de synthése Struts

TP Struts M.Youssfi

Code JSP :

<%@ page language="java" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%><html><body> <html:form action="login.do" method="post" > Login:<html:text property="login" /><br/> Pass :<html:password property="pass" /><br/> <html:submit value="Valider" /> </html:form><html:errors /></body></html>

2- Le Form Bean associé : LoginForm.java

Code java   :

import javax.servlet.http.HttpServletRequest;

import mod.app.Utilisateur;

import org.apache.struts.action.*;public class LoginForm extends ActionForm {

private String login="root";private String pass="pass";private Utilisateur user=null;

public String getLogin() {return login;

}public void setLogin(String login) {

this.login = login;}public String getPass() {

return pass;}public void setPass(String pass) {

this.pass = pass;}

6 / 12

Page 7: TP de synthése Struts

TP Struts M.Youssfi

public Utilisateur getUser() {return user;

}public void setUser(Utilisateur user) {

this.user = user;}public ActionErrors validate(ActionMapping

map,HttpServletRequest request){ActionErrors errors=new ActionErrors();if((this.getLogin().equals(""))||this.getLogin()==null){

errors.add("login",new ActionError("login.vide"));}if ((this.getPass().equals(""))||this.getPass()==null){

errors.add("pass",new ActionError("pass.invalide"));}return errors;

}}

3- Action associée : LoginAction.java

Code java   :

import javax.servlet.http.*;

import mod.app.GestUsers;import mod.app.Utilisateur;

import org.apache.struts.action.*;public class LoginAction extends Action {

public ActionForward execute(ActionMapping map,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{

LoginForm lf=(LoginForm)form;GestUsers gu=new GestUsers();Utilisateur u=gu.loadUser(lf.getLogin(),lf.getPass());if(u!=null){

lf.setUser(u);return map.findForward("bienvenue");

}else{

return map.findForward("notAutorised");}

}

}

7 / 12

Page 8: TP de synthése Struts

TP Struts M.Youssfi

4- Vue Bienvenue.jsp

Si l’utilisateur existe, la vue suivante devrait être affichée. Elle permet d’afficher l’état de l’utilisateur actuel.

Code JSP   :

<%@ page language="java" %><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %><html><head><title>Bien Venue</title></head><body bgcolor="#FFFFFF">

<h3> Id User :<bean:write name="logFor" property="user.idUser" /><br/> Login :<bean:write name="logFor" property="user.login" /><br/> Pass :<bean:write name="logFor" property="user.pass" /><br/> Email:<bean:write name="logFor" property="user.email" /><br/> Ville :<bean:write name="logFor" property="user.ville" /><br/></h3></body></html>

5- web.xml (pas de changement par rapport au fichier standard)6- struts-config.xml

<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config> <form-beans>

<form-bean name="logFor" type="LoginForm"/> </form-beans> <global-forwards> <forward name="bienvenue" path="/BienVenue.jsp"/> <forward name="notAutorised" path="/Login.jsp"/> </global-forwards> <action-mappings>

<action path="/login" name="logFor"

8 / 12

Page 9: TP de synthése Struts

TP Struts M.Youssfi

type="LoginAction" scope="request" input="/Login.jsp" validate="true" />

</action-mappings> <message-resources parameter="ApplicationResources"/></struts-config>

7 - Création du ficher de ressources.

Dans le dossier classes, créer un fichier texte nommé ApplicationResources.properties dont le contenu est le suivant :

login.vide=<li>Vous devez saisir un login</li>pass.invalide =<li>Vous devez saisir un mot de pass valide</li>

8- Démarrer Tomcat et tester votre application

E- Ajout et affichage des utilisateurs :

Vue Affiche.jsp

9 / 12

Page 10: TP de synthése Struts

TP Struts M.Youssfi

1- FormBean associé à cette vue : UsersForm.java

import org.apache.struts.action.*;import java.util.*;public class UsersForm extends ActionForm {

private String login;private String pass;private String email;private String ville;private Vector users=new Vector();

public String getEmail() {return email;

}public void setEmail(String email) {

this.email = email;}public String getLogin() {

return login;}public void setLogin(String login) {

this.login = login;}public String getPass() {

return pass;}public void setPass(String pass) {

this.pass = pass;}public Vector getUsers() {

return users;}public void setUsers(Vector users) {

10 / 12

Page 11: TP de synthése Struts

TP Struts M.Youssfi

this.users = users;}public String getVille() {

return ville;}public void setVille(String ville) {

this.ville = ville;}

}2- Action associée à la vue : UsersAction.java

import javax.servlet.http.*;

import mod.app.GestUsers;import mod.app.Utilisateur;

import org.apache.struts.action.*;public class UsersAction extends Action {

public ActionForward execute(ActionMapping map,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception{

UsersForm uf=(UsersForm)form;GestUsers gu=new GestUsers();

gu.addUser(uf.getLogin(),uf.getPass(),uf.getEmail(),uf.getVille());uf.setUsers(gu.selectAll());return map.findForward("afficheUsers");

}}

3- La vue Affiche.jsp<%@ page language="java" %><%@ page import="mod.app.*" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%><%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%><!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head><title>Utilisateurs</title></head><body bgcolor="#FFFFFF"> <table border="1" width="75%" align="center"> <tr> <td>Id</td><td>Login</td><td>Pass</td><td>Ville</td><td>Email</td> </tr><html:form action="addUser.do" > <tr> <td></td> <td><html:text property="login" /></td> <td><html:text property="pass" /></td> <td><html:text property="email" /></td>

11 / 12

Page 12: TP de synthése Struts

TP Struts M.Youssfi

<td><html:text property="ville" /></td> <td><html:submit value="Ajouter" /></td> </tr></html:form><logic:iterate id="user" name="usersForm" property="users" type="Utilisateur" > <tr> <td><bean:write name="user" property="idUser" /></td> <td><bean:write name="user" property="login" /></td> <td><bean:write name="user" property="pass" /></td> <td><bean:write name="user" property="email" /></td> <td><bean:write name="user" property="ville" /></td> </tr></logic:iterate></body></html>

4- Mise à jour du fichier struts-config.xml

Ajouter les lignes en gras au fichier précédent :

<struts-config> <form-beans>

<form-bean name="logFor" type="LoginForm"/> <form-bean name="usersForm" type="UsersForm"/> </form-beans> <global-forwards>

<forward name="bienvenue" path="/BienVenue.jsp"/> <forward name="notAutorised" path="/Login.jsp"/> <forward name="afficheUsers" path="/Affiche.jsp"/> </global-forwards> <action-mappings>

<action path="/login" name="logFor" type="LoginAction" scope="request" input="/Login.jsp" validate="true" />

<action path="/addUser" name="usersForm" type="UsersAction" scope="request" /> </action-mappings> <message-resources parameter="ApplicationResources"/></struts-config>

5- Tester l’application :

La vue affiche.jsp doit être appelée avec l’url addUser.do, car elle utilise les données du bean de formulaire UsersForm nommé usersForm.

12 / 12