[Java] Un Crud super basique JSP-JSTL avec Mysql

Java_logoJSP_LOGO_RGBlogo-mysql-170x170_400x400

Introduction


Faire un CRUD avec JSP, et utiliser JSTL pour simplifier les accès SQL dans les pages.

Aucune Classe Java ici, tout est fait directement dans les JSP.

Photo :


tab1.jpg

Prérequis :


  1. Créer une table SQL comme indiqué ici(Je sais c’est en anglais mais la flemme de traduire, ma base de données s’appelle test) :

CREATE TABLE `product` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `pname` varchar(45) NOT NULL,
  `quantity` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`)
);

INSERT INTO `product` (`id`,`pname`,`quantity`) VALUES
 (1,'Mouse',50),
 (2,'Keyboard',5),
 (3,'Monitor',34);
  1. Créer un dynamic web project dans Eclipse appelé jstlFolies
  2. Glisser-déposer toutes les librairies en .jar dans le répertoire WebContent/WEB-INF/lib:

ça comprends le jar mysql-connector et tous les 4 jars présents sur cette page :

http://tomcat.apache.org/download-taglibs.cgi

Voici l’aspect qu’aura l’arborescence dans eclipse à la fin :

jstlfolies.jpg

A chaque fois, faire un clic droit sur le repértoire WebContent pour créer une nouvelle JSP

INDEX.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
<h1>Choisissez une option</h1>
<a href="insert.jsp">Insérer un enregistrement</a>

        <a href="display.jsp">Montrer les enregistrements</a>
    </body>
</html>

DISPLAY.JSP

<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 
<html>
    <head>
        <title>SELECT Operation</title>
        <script>
            function confirmGo(m,u) {
                if ( confirm(m) ) {
                    window.location = u;
                }
            }
        </script>
    </head>
    <body>
 
        <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"
                           url="jdbc:mysql://localhost/test"
                           user="root"  password="root"></sql:setDataSource>
 
        <sql:query dataSource="${dbsource}" var="result">
            SELECT * from product;
        </sql:query>
    <center>
        <form>
            <table border="1" width="40%">
                <caption>Liste des produits</caption>
                <tr>
                    <th>Id du Produit</th>
                    <th>Nom du Produit</th>
                    <th>Quantité</th>
                    <th colspan="2">Action</th>
                </tr>
                <c:forEach var="row" items="${result.rows}">
                    <tr>
                        <td><c:out value="${row.id}"></c:out></td>
                        <td><c:out value="${row.pname}"></c:out></td>
                        <td><c:out value="${row.quantity}"></c:out></td>
                        <td><a href="update.jsp?id=<c:out value="${row.id}"></a>">Mettre à Jour</a></td>
                        <td><a href="javascript:confirmGo('Sure to delete this record?','deletedb.jsp?id=<c:out value="${row.id}"></a>')">Supprimer</a></td>
                         
                    </tr>
                </c:forEach>
            </table>
        </form>
        <a href="index.jsp">Retour</a>
    </center>
</body>
</html>

INSERT.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form action="insertdb.jsp" method="post">
            <table border="0" cellspacing="2" cellpadding="5">
                <thead>
                    <tr>
                        <th colspan="2">Ajouter un Produit</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td><label>Nom du produit</label></td>
                        <td><input type="text" name="pname"/></td>
                    </tr>
                    <tr>
                        <td><label>Quantité</label></td>
                        <td><input type="text" name="qty"/></td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="Save" /></td>
                        <td><input type="reset" value="reset"/></td>
                    </tr>
                </tbody>
            </table>
        </form>
        <font color="red"><c:if test="${not empty param.errMsg}">
            <c:out value="${param.errMsg}" ></c:out>
            <a href="index.jsp">Retour</a>
        </c:if></font>
        <font color="green"><c:if test="${not empty param.susMsg}">
            <c:out value="${param.susMsg}" ></c:out>
            <a href="index.jsp">Retour</a>
        </c:if></font>
 
    </body>
</html>

INSERTDB.JSP

<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
    <head>
        <title>INSERTION Operation</title>
    </head>
    <body>
        <c:if test="${ empty param.pname or empty param.qty}">
            <c:redirect url="insert.jsp" >
                <c:param name="errMsg" value="S'il vous plait entrez un produit " ></c:param>
            </c:redirect>

        </c:if>
        <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"                            url="jdbc:mysql://localhost/test"                            user="root"  password="root"></sql:setDataSource>

        <sql:update dataSource="${dbsource}" var="result">
            INSERT INTO product(pname, quantity) VALUES (?,?);
            <sql:param value="${param.pname}" ></sql:param>
            <sql:param value="${param.qty}" ></sql:param>
        </sql:update>
        <c:if test="${result>=1}">
            <font size="5" color='green'> Félicitations ! Les données ont été ajoutées
            .</font>

            <c:redirect url="insert.jsp" >
                <c:param name="susMsg" value="Félicitations ! Les données ont été ajoutées             ." ></c:param>
            </c:redirect>
        </c:if> 

    </body>
</html>

UPDATE.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
 
   <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"
                           url="jdbc:mysql://localhost/test"
                           user="root"  password="root"></sql:setDataSource>
 
        <sql:query dataSource="${dbsource}" var="result">
            SELECT * from product where id=?;
            <sql:param value="${param.id}" ></sql:param>
        </sql:query>
        <form action="updatedb.jsp" method="post">
            <table border="0" width="40%">
                <caption>Mettre à jour</caption>
                <tr>
                    <th>Nom</th>
                    <th>Quantité</th>
                </tr>
                <c:forEach var="row" items="${result.rows}">
                    <tr>
                        <td><input type="hidden" value="${param.id}" name="id"/>
                            <input type="text" value="${row.pname}" name="pname"/></td>
                        <td><input type="text" value="${row.quantity}" name="qty"/></td>
                        <td><input type="submit" value="Update"/></td>
                    </tr>
                </c:forEach>
            </table>
            <a href="index.jsp">Retour</a>
        </form>
    </body>
</html>

UPDATEDB.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
     <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"                            url="jdbc:mysql://localhost/test"                            user="root"  password="root"></sql:setDataSource>
        <sql:update dataSource="${dbsource}" var="count">
            UPDATE product SET pname = ?, quantity=?
            WHERE id='${param.id}'
            <sql:param value="${param.pname}" ></sql:param>
            <sql:param value="${param.qty}" ></sql:param>
        </sql:update>
        <c:if test="${count>=1}">
            <font size="5" color='green'> Bravo ! Data Mis à jour correctement.</font>
              <a href="index.jsp">Retour</a>
        </c:if>
    </body>
</html>

DELETEDB.JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <sql:setDataSource var="dbsource" driver="com.mysql.jdbc.Driver"
                           url="jdbc:mysql://localhost/test"
                           user="root"  password="root"></sql:setDataSource>
        <sql:update dataSource="${dbsource}" var="count">
            DELETE FROM product
            WHERE id='${param.id}'
        </sql:update>
        <c:if test="${count>=1}">
            <font size="5" color='green'> Félicitations ! Les données ont été supprimées
            .</font>
              <a href="index.jsp">Retour</a>          
        </c:if>
    </body>
</html>
Publicités