View
1.041
Download
4
Category
Tags:
Preview:
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
Recommended