[Java] Créer un couple JSP/BEAN puis créer un couple JSP/BEAN pour quérir Mysql

Java_logo

Introduction


Toujours dans le trip Java, avec Eclipse dernière version, Tomcat 8.0 comme serveur Web, Mysql comme base  de données et surtout : MYSqL WORKBENCH, un super logiciel qui permet de gérer ses bases MYSQL super facilement, on peut créer des n-uplets(enregistrements), sur le vif pour les démos c’est super:

Sans titre 2.jpg

Aujourd’hui,voici le sommaire:

  1. je crée une page web .JSP avec une classe Java(appellée BEAN) qui fournit les données à la page Web.
  2. Puis, je crée une page Web .JSP avec une classe JAVA(appellée BEAN) qui fournit les données à partir de la base de données MYSQL, dont le serveur est installé en dur sur mon ordinateur, accessible à partir du port 3306.

Mon but,  serait également de trouver le moyen de faire un BackEnd JAVA qui créérait de l’objet JSON pour AngularJs… Comme j’ai fais dans mon application trouve ton Film avec PHP…

1. Créer une JSP avec un BEAN associé, qui fournit les données, dans ECLIPSE:


Tout d’abord, dans Eclipse JAVAEE, faire FILE/NEW/ DYNAMIC WEB PROJECT et créer le projet ‘projetWeb’

Ensuite, dans l’arborescence créée, cliquer droit sur le répertoire WebContent, puis clic droit/créer une JSP. La nommer « JspEtBeanQuiMarche ».

Supprimer le code généré dans l’onglet de la jsp qui s’affiche et insérer celui ci à la place :

<html>
<HEAD>
	<TITLE>Essai d'instanciation d'un bean dans une JSP</TITLE>
</HEAD>

<body>
	<p>Test d'utilisation d'un Bean dans une JSP </p>
	<jsp:useBean id="personne" scope="request" class="projetWeb.Personne" ></jsp:useBean>
	<p>nom initial = <%=personne.getNom() %></p>
	<%personne.setNom("mon nom");%>
	<p>nom mis à jour = <%= personne.getNom() %></p>
</body>

</html>

Enregistrer la JSP.

Ensuite, en phase deux, on va créer la classe JAVA de type BEAN qui va apporter à la JSP toutes les données dont elle a besoin :

Faire un clic droit sur le répertoire « Java ressources » et créer une classe, la nommer Personne.java :

Ensuite, lorsque l’onglet de la classe java de type bean s’ouvre, supprimer le code généré puis copier ce code à l’intérieur:

package projetWeb;

public class Personne {
	  private String nom;
	  private String prenom;

	  public Personne() {
	    this.nom = "nom par defaut";
	    this.prenom = "prenom par defaut";
	  }

	  public void setNom (String nom) {
	    this.nom = nom;
	  }

	  public String getNom() {
	    return (this.nom);
	  }

	  public void setPrenom (String prenom) {
	    this.prenom = prenom;
	  }

	  public String getPrenom () {
	    return (this.prenom);
	  }
	}

On peut remarquer que le package est le nom que l’on a donné à notre projet Web dans eclipse.

Enregistrer la classe, puis relancer le serveur en cliquant sur l’onglet servers puis sur stop (rouge) et sur play(vert)

Enfin, pour tester le tout, cliquer droit sur la jsp que l’on a créé, et faire « Run as »/ »Run on server »

Le texte suivant s’affiche alors dans le site web :


Test d’utilisation d’un Bean dans une JSP

nom initial = nom par defaut

nom mis à jour = mon nom

Ce qui prouve que cela fonctionne.

 

2.Créer une page Web .JSP avec une classe JAVA(appellée BEAN) qui fournit les données à partir de la base de données MYSQL.

 

Tout d’abord, il faut télécharger le fichier.jar mysql-connector-java-5.1.38-bin.jar qui est la librairie qui permet d’accéder à Mysql.

Ensuite, il faut glissé déposé le fichier mysql-connector-java-5.1.38-bin.jar dans le répertoire « lib » du répertoire WEB-INF de l’application projetWeb que l’on a créé à l étape un.

Ensuite, on crée une base de données appelée « feedback » sur le serveur MYSQL que l’on a installé sur notre ordinateur .

Puis on crée la table tbl_user_primary avec les champs suivants

  • id, fname,lname,email,password,gender

Oui je sais c’est en anglais pas le temps de traduire .

Ensuite, on peuple la table comme cela :

  • insert into tbl_user_primary values (‘1′,’Pierre’,’bertrand’,’p.b@gmail.com’,’gch’,’m’);

Bref, ce sera notre table de démo …

On redémarre le serveur tomcat, puis on crée une nouvelle JSP que l’on nomme « JspMysqlQuiMarche » sous WEBCONTENT/WEB-INF, en faisant un clic droit, comme d’hab.

Le code de cette jsp est le suivant  :

<%@ page import="java.util.*" %>
<jsp:useBean id="showDataBean" class="projetWeb.ShowDataBean" scope="request" ></jsp:useBean>
 
<table width="900" cellspacing="0" cellpadding="0">
    <tr>
   
        <td>
        Name
        </td>
        <td>
        Email
        </td>
        <td>
        PassWord
        </td>
        <td>
        Gender
        </td>
        
    </tr>
    <%
        List<Object> list=new ArrayList<Object>();
        list=showDataBean.getDb_Data();
        for(int i=0;i<list.size();i++)
        {
            showDataBean.setObj(list.get(i));
        %>
         
    <tr>
        <td>
        <%
            out.print(showDataBean.getFname() +" "+ showDataBean.getLname());
         
        %>
        </td>
        <td>
        <%
            out.print(showDataBean.getEmail());
        %>
        </td>
        <td>
        <%
            out.print(showDataBean.getPassword());
        %>
        </td>
        <td>
       <%
            out.print(showDataBean.getGender());
        %>
        </td>
         
    </tr>
    <% }%>
</table>

on peut remarquer qu’il y a une boucle for qui tourne pour créer un tableau HTML… Avec AngularJS 1.5 et Firebase, on fait cela en 2 lignes, là il en faut 200 ! Mais c’est pas mal quand même !!

Ensuite, on créé comme dans la partie un, une classe BEAN nommée ShowDataBean , on supprime le code autogénéré, pusi on colle ce code à la place:

package projetWeb;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class ShowDataBean
{

    String error;
    List<Object> allData=new ArrayList<Object>();

    public String fname,lname,email,password,gender;
    Object obj=new Object();

    public void setObj(Object obj) {
        this.obj = obj;
    }
    public String getError() {
        return error;
    }
    public List getDb_Data()
    {
        int i=0;
        try
        {
                String qry;
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/feedback","root","root");
                Statement s = con.createStatement();
                qry="Select fname,lname,email,password,gender from feedback.tbl_user_primary";
                ResultSet r=s.executeQuery(qry);
                while(r.next())
                {
                    DataFields d=new DataFields(r.getString(1), r.getString(2), r.getString(3),r.getString(4), r.getString(5));
                    allData.add(i,d);
                    i++;
                }

        }
        catch(Exception ex)
        {
                error="<b>Contact Administrator :</b>
" + ex;
                System.out.println("Your query is not working" + ex);
        }
       return allData;
    }
    public String getFname()
    {
        this.fname=((DataFields)obj).fname;
        return this.fname;
    }
    public String getEmail() {
        this.email=((DataFields)obj).email;
        return this.email;
    }

    public String getGender() {
        this.gender=((DataFields)obj).gender;
        return this.gender;
    }
    public String getLname() {
        this.lname=((DataFields)obj).lname;
        return this.lname;
    }
    public String getPassword() {
        this.password=((DataFields)obj).password;
        return this.password;
    }

    public class DataFields
    {
        public String fname,lname,email,password,gender;

        public DataFields(String  fname,String  lname,String  email,String  password,String  gender)
        {
            this.fname=fname;
            this.lname=lname;
            this.email=email;
            this.password=password;
            this.gender=gender;
        }
    }

}

Hé oui j’ai pas encore eu le temps de traduire, mais l’important est que si l’on clique droit sur exécuter sur le serveur sur la JSP que l’on a créé, la connexion fonctionne bien et nos utilisateur s’affichent bien dans le serveur WEB, il s’agit de l’un des rares exemples fonctionnels trouvés sur le web, je le traduirais bientôt ! :

 

java1.jpg

Publicités