JSP con accesso SQL, Come gestire l’accesso a un DB sql in una Java Server Page

Java Server Page Tutorial

Qualora fosse necessario accedere a un RDBMS, con Java Server Page è possibile. In questo post andremo a vedere come accedere a un database SQL con JSP. Prima di iniziare con pagine JSP con accesso SQL, assicurati di avere una corretta configurazione dell’ambiente JDBC insieme a un database SQL.

Operazione SELECT

L’esempio seguente mostra come eseguire l’ istruzione SQL SELECT utilizzando JTSL nella programmazione JSP con accesso SQL. Consideriamo di utilizzare il driver ODBC di mysql

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ 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 in JSP PAGE</title>
   </head>

   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/Sqlfromjsp"
         user = "root"  password = "pwd"/>
 
      <sql:query dataSource = "${snapshot}" var = "result">
         SELECT * from Countries;
      </sql:query>
 
      <table border = "1" width = "100%">
         <tr>
            <th>Contry ID</th>
            <th>Name</th>
            <th>Capital Town</th>
            <th>NumbResidents</th>
         </tr>
         
         <c:forEach var = "row" items = "${result.rows}">
            <tr>
               <td><c:out value = "${row.id}"/></td>
               <td><c:out value = "${row.name}"/></td>
               <td><c:out value = "${row.capital}"/></td>
               <td><c:out value = "${row.numbresidents}"/></td>
            </tr>
         </c:forEach>
      </table>
 
   </body>
</html>

La query implementata in questa pagina JSP con accesso SQL ci consente di leggere dalla tabella “Countries” l’elenco delle Nazioni con la capitale e gli abitanti della capitale.

Operazione INSERT

L’esempio seguente mostra come eseguire l’istruzione SQL INSERT utilizzando utilizzando JTSL nella programmazione JSP. Consideriamo di utilizzare il driver ODBC di mysql

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ 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>JINSERT Operation in JSP PAGE</title>
   </head>
   
   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/Sqlfromjsp"
         user = "root"  password = "pwd"/>
         <sql:update dataSource = "${snapshot}" var = "result">
         INSERT INTO Countries VALUES (99, 'Italy', 'Rome', 2873000);
      </sql:update>
 
      <sql:query dataSource = "${snapshot}" var = "result">
         SELECT * from Countries;
      </sql:query>
 
      <table border = "1" width = "100%">
         <tr>
            <th>Contry ID</th>
            <th>Name</th>
            <th>Capital Town</th>
            <th>NumbResidents</th>
         </tr>
         
         <c:forEach var = "row" items = "${result.rows}">
            <tr>
               <td><c:out value = "${row.id}"/></td>
               <td><c:out value = "${row.name}"/></td>
               <td><c:out value = "${row.capital}"/></td>
               <td><c:out value = "${row.numbresidents}"/></td>
            </tr>
         </c:forEach>
      </table>
 
   </body>
</html>

In questo esempio viene inserito un nuovo record con Country “Italy”, Capital “Rome” e numero di abitanti. Successivamente viene fatta una query dove si potrà vedere la nuova riga inserita.

Operazione DELETE

L’esempio seguente mostra come eseguire l’ istruzione SQL DELETE utilizzando JTSL nella programmazione JSP. Consideriamo di utilizzare il driver ODBC di mysql

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ 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>DELETE Operation in JSP PAGE</title>
   </head>
   
   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/Sqlfromjsp"
         user = "root"  password = "pwd"/>
 
      <c:set var = "countryId" value = "99"/>
 
      <sql:update dataSource = "${snapshot}" var = "count">
         DELETE FROM Countries WHERE Id = ?
         <sql:param value = "${countryId}" />
      </sql:update>
 
      <sql:query dataSource = "${snapshot}" var = "result">
         SELECT * from Countries;
      </sql:query>
 
      <table border = "1" width = "100%">
         <tr>
            <th>Contry ID</th>
            <th>Name</th>
            <th>Capital Town</th>
            <th>NumbResidents</th>
         </tr>
         
         <c:forEach var = "row" items = "${result.rows}">
            <tr>
               <td><c:out value = "${row.id}"/></td>
               <td><c:out value = "${row.name}"/></td>
               <td><c:out value = "${row.capital}"/></td>
               <td><c:out value = "${row.numbresidents}"/></td>
            </tr>
         </c:forEach>
      </table>
 
   </body>
</html>

In questo esempio viene cancellato un record nella tabella Country, e in particolare “Italy”, Capital “Rome” e numero di abitanti. Successivamente viene fatta una query dove si potrà vedere che la riga è stata cancellata.

Operazione UPDATE

L’esempio seguente mostra come eseguire l’ istruzione SQL UPDATE utilizzando JTSL nella programmazione JSP. Consideriamo di utilizzare il driver ODBC di mysql

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ 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>UPDATE Operation in JSP PAGE</title>
   </head>
   
   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/TEST"
         user = "root" password = "pass123"/>
 
      <c:set var = "countryId" value = "98"/>
 
      <sql:update dataSource = "${snapshot}" var = "count">
         UPDATE Countries SET capital = 'Rome' WHERE Id = ?
         <sql:param value = "${countryId}" />
      </sql:update>
 
      <sql:query dataSource = "${snapshot}" var = "result">
         SELECT * from Countries;
      </sql:query>
 
      <table border = "1" width = "100%">
         <tr>
            <th>Contry ID</th>
            <th>Name</th>
            <th>Capital Town</th>
            <th>NumbResidents</th>
         </tr>
         
         <c:forEach var = "row" items = "${result.rows}">
            <tr>
               <td><c:out value = "${row.id}"/></td>
               <td><c:out value = "${row.name}"/></td>
               <td><c:out value = "${row.capital}"/></td>
               <td><c:out value = "${row.numbresidents}"/></td>
            </tr>
         </c:forEach>
      </table>
 
   </body>
</html>

In questo esempio viene modificato un record nella tabella Country, e in particolare la riga con ID=99 viene impostato il campo Capital con il valore “Rome”. Successivamente viene fatta una query dove si potrà vedere che la riga è stata modificata.


Ercole Palmeri

Autore