Skip to content

Instantly share code, notes, and snippets.

@Ombrelin
Created May 9, 2020 18:10
Show Gist options
  • Save Ombrelin/020bbf187f9cca86603f5a445a410876 to your computer and use it in GitHub Desktop.
Save Ombrelin/020bbf187f9cca86603f5a445a410876 to your computer and use it in GitHub Desktop.

Tuto JavaEE

Tuto pour installer un environnement de développement JavaEE

Eclipse JavaEE

Tomcat

Oracle XE 10g

  • Télécharger Oracle
  • Extraire
  • Exécuter et suivre le programme d'installation -> Attention bien se rappeller le mot de passe admin qu'on a miss
  • Ouvrir SQL plus
  • Se connecter le compte system et le mot de passe que vous avez setup dans l'installation
  • Exécuter la commande suivante :
Exec DBMS_XDB.SETHTTPPORT(3010);
  • Créer votre compte utilisateur :
CREATE USER nom_utilisateur IDENTIFIED BY mot_de_passe;
GRANT DBA TO nom_utilisteur;

Créer un Projet

  • Dans Eclipse JavaEE faire New > Other > Web > Dynamique Web Project
  • Donner un nom au projet
  • Sous Target runntime > New Runtime
  • Apace Tomcat > Apache Tomcat v9.0
  • Dans Tomcat Installation Directory Mettre le chemin de notre installation de Tomcat via le bouton Browse

Hello World

  • Créer une page html dans le dossier WebContent avec un Hello World dedans
  • Clic droit sur le projet > Run as > Run on server
  • Cocher toujours utiliser ce serveur et valider
  • Eclipse vous ouvre un navigateur embarqué
  • Vous pouvez voir votre Hello World à la racine de votre application

JDBC

  • Télécharger le Driver ODBC
  • Le placer dans le dossier WebContent > WEB-INF > lib
  • Référencer le JAR dans le classpath : clic droit sur le projet > Propriétés > Java Build Path > Libraries > Add JAR > Ajouter le JAR ODBC
  • Connexion :
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "nom_utilisateur", "mot_de_passe");

Good to go !

Servlets

Une servelet est un controleur JavaEE qui sert à gérer les requêtes HTTP

@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
    
    public HelloWorld() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}
  • Le routage se fait avec l'annotation @WebServlet("/route") la Servlet sera ainsi servie à la route /route
  • Les méthodes doGet et doPost servent à gérer respectivement les méthodes HTTP GET et POST. On utilise GET pour les pages et POST pour les formulaires (car les requêtes de méthode POST ont un RequestBody)

Dans les Servlets ce qu'on va faire c'est :

  • Récupérer/Stocker des infos dans la Session
HttpSession session = request.getSession();		
Utilisateur u = (Utilisateur) session.getAttribute("utilisateur");
  • Récupérer/Stocker des infos dans la Base de donnée (via une Classe de DAO)
  • Récupérer des infos depuis la requête (des paramètres de requête soit en GET soit en POST)
String numDocParam = request.getParameter("numero");
  • Envoyer des informations à la vue
request.setAttribute("erreur", "Ce document est déjà emprunté");
  • Envoyer une vue
this.getServletContext().getRequestDispatcher("/WEB-INF/emprunt.jsp").forward(request, response);
  • Rediriger vers une autre route
response.sendRedirect("/projet-app-web-java/Abonne");

JSP / JSTL

Les Java Server Pages sont des templates de vues qui sont rendus coté serveur. Ces vues sont templatables par du code Java mais c'est une mauvaise pratique car ça rend le code full Spaghetti bordélique et illlisible. C'est pourquoi il est recommandé d'utilise JSTL, la Java Standard Tag Library

  • Télécharger JSTL
  • Le placer dans le dossier WebContent > WEB-INF > lib
  • Référencer le JAR dans le classpath : clic droit sur le projet > Propriétés > Java Build Path > Libraries > Add JAR > Ajouter le JAR ODBC
  • Dans toutes les JSP mettre en entête :
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="j"%>

Dans une JSP on peut faire plein de choses, surtout avec la JSTL :

  • Des includes d'autres JSP (utile pour factoriser les headers, les footers, etc ...)
<%@ include file="header.jsp" %>
  • Afficher une variable :
<p><j:out value="${ variable }">Valeur par défaut</j:out></p>
  • Rendu conditionnel avec un if :
<j:if test="${ variable = '1' }">
    C'est vrai !
</j:if>
  • Rendu conditionnel avec un switch :
<j:choose>
    <j:when test="${ variable }">Du texte</c:when>
    <j:when test="${ autreVariable }">Du texte</c:when>
    <j:when test="${ encoreUneAutreVariable }">Du texte</c:when>
    <j:otherwise></c:otherwise>
</j:choose>
  • Itération sur une liste :
<j:forEach items="${ titres }" var="titre" varStatus="status">
    <p><j:out value="${ status.count }" /> : <j:out value="${ titre }" /> !</p>
</j:forEach>

TP

Le Tp consiste au développement d'un système de login

Préparer la base de donnée

Voilà le script pour créer le schéma de la base

CREATE SEQUENCE app_users_seq START WITH 1;

CREATE TABLE app_users(
   u_id INT PRIMARY KEY,
   u_login VARCHAR(50),
   u_password VARCHAR(50)
);
/

CREATE OR REPLACE TRIGGER app_users_bir 
BEFORE INSERT ON app_users
FOR EACH ROW

BEGIN
  SELECT app_users_seq.NEXTVAL
  INTO   :new.u_id
  FROM   dual;
END;
/

Créer une classe Connexion responsable dans la connexion à la base de donnée

Insérer une ligne pour un utilisateur de test

Modèle

Créer une classe de POJO ApplicationUser avec les champs nécessaires.

DAO

Créer une classe abstract DAO qui fait appelle à la classe connexion qui contient une méthode :

public boolean connect(String login, String password){}

Implémenter la méthode.

Formulaire

Pour faire une formulaire il faut une servlet avec une méthode doGet et une méthode doPost. Le formulaire en lui même sera servit par la méthode doGet. La soumission du formulaire se fera par la méthode doPost.

// TODO : Remplir le code manquant :

Formulaire de connexion simple :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="j"%>
<body>
       <form method="post">
		<input type="text" name="login" id="login"/>
	        <input type="password" name="password" id="password"/>
	       	 ... affichage de l'erreur ...
		<input type="submit" value="Connexion"/>
       </form>
</body>	

La servlet correspondante :

@WebServlet("/Login")
public class Login extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public Login() {
		super();
	}

	// Sert la JSP du formulaire
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		...
	}

	// Gère la soumission du formulaire
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		... Récupération des informations du formulaire ...

		if(... logique d'authentification ...){
			... Stockage du profile dans la session...
			... Redirection vers l'accueil ...
		} else {
			... Gérer l'erreur...
			... Retourner la vue de login avec l'erreur ...
		}
		
	}

}

Pour aller plus loin ...

  • Implémenter l'inscription : un autre formulaire et une méthode insert dans la DAO
  • Chiffrer les mots de passe dans la base de donnée pour une meilleure sécurité : Utiliser la bibliothèque BCrypt
  • Un peu de front : Rendre les formulaires jolis à l'aide d'un framework CSS de son choix (Bootstrap, Materialize, MS Design Lite ... )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment