0% found this document useful (0 votes)
60 views

JSP Short Tutorial

- The document discusses using Java Server Pages (JSP) and Java Database Connectivity (JDBC) to build a web application for entering student data into a database. - It shows how to connect to a database, execute queries to retrieve and modify data, and use JSP tags and scriptlets to build interactive forms for data entry, updating, and deleting records. - The key aspects covered include connecting to the database, executing SQL statements using JDBC, iterating through result sets, and building JSP pages with forms to insert, update, and delete student records from the database.

Uploaded by

Emmanuel Masabo
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

JSP Short Tutorial

- The document discusses using Java Server Pages (JSP) and Java Database Connectivity (JDBC) to build a web application for entering student data into a database. - It shows how to connect to a database, execute queries to retrieve and modify data, and use JSP tags and scriptlets to build interactive forms for data entry, updating, and deleting records. - The key aspects covered include connecting to the database, executing SQL statements using JDBC, iterating through result sets, and building JSP pages with forms to insert, update, and delete student records from the database.

Uploaded by

Emmanuel Masabo
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

JSP Tutorial

By Emmanuel MASABO

Three-Tier Architecture
Located @ Any PC HTTP Requests Located @ Your PC Microsoft Internet Explorer HTML

Glassfish Server Java Server Pages (JSPs) JDBC Requests Tuples

Located @ DBLab

Oracle DB Server

Data Entry Forms

JDBC
import java.sql.*; class JdbcTest { public static void main (String args []) throws SQLException { try{ // Connect to the local database Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student s_db","root",""); // Query the student first names Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery ("SELECT * FROM Students");

// Print the first name out //firstname is the 3rd attribute of Student while (rset.next ()) System.out.println(rset.getString(3)); //close the result set, statement, and the connection rset.close(); stmt.close(); conn.close(); } catch(SQLException err){ System.out.println(err.getMessage()); } } }

PreparedStatement Object If you want to execute a Statement object many times, it will normally reduce execution time to use a PreparedStatement object instead. PreparedStatement updateStud = conn.prepareStatement( "UPDATE Students SET first_name = ? WHERE last_name LIKE ?"); updateStud.setString(1, John); updateStud.setString(2, Smith); updateStud.executeUpdate();

PreparedStatement Object the following two code fragments accomplish the same thing: Code Fragment 1: String updateString = "UPDATE COFFEES SET SALES = 75 " + "WHERE COF_NAME LIKE 'Colombian'"; stmt.executeUpdate(updateString); Code Fragment 2: PreparedStatement updateSales = con.prepareStatement( "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? "); updateSales.setInt(1, 75); updateSales.setString(2, "Colombian"); updateSales.executeUpdate():

int getInt(int columnIndex) Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language. int getInt(String columnName)

String getString(int columnIndex)


String getString(String columnName)

Using Transactions
When a connection is created, it is in auto-commit mode. This means that each individual SQL statement is treated as a transaction and will be automatically committed right after it is executed.

conn.setAutoCommit(false); .... transaction ... con.commit(); con.setAutoCommit(true);

Using Transactions
example

con.setAutoCommit(false); PreparedStatement updateSales = con.prepareStatement( "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?"); updateSales.setInt(1, 50); updateSales.setString(2, "Colombian"); updateSales.executeUpdate(); PreparedStatement updateTotal = con.prepareStatement( "UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME LIKE ?"); updateTotal.setInt(1, 50); updateTotal.setString(2, "Colombian"); updateTotal.executeUpdate(); con.commit(); con.setAutoCommit(true);

Retrieving Exceptions
JDBC lets you see the warnings and exceptions generated by your DBMS and by the Java compiler. To see exceptions, you can have a catch block print them out. For example, the following two catch blocks from the sample code print out a message explaining the exception:

try { // Code that could generate an exception goes here. // If an exception is generated, the catch block below // will print out information about it. } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); }

JSP Syntax
Comment
<%-- Comment --%>

Expression
<%= java expression %>

Scriplet
<% java code fragment %>

Include
<jsp:include page="relativeURL" />

Entry Form - First Attempt

Entry Form - First Attempt


Menu HTML Code
<b>Data Entry Menu</b> <ul> <li> <a href=Courses.jsp">Courses<a> </li> <li> <a href=Classes.jsp">Classes<a> </li> <li> <a href=Students.jsp">Students<a> </li> </ul>

Entry Form - First Attempt


JSP Code
<html> <body> <table> <tr> <td> <jsp:include page="menu.html" /> </td> <td> Open connection code Statement code Presentation code Close connection code </td> </tr> </table> </body> </html>

Entry Form - First Attempt


Open Connectivity Code
<%-- Set the scripting language to java and --%> <%-- import the java.sql package --%> <%@ page language="java" import="java.sql.*" %> <%

try {
// Make a connection to the MySql datasource Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3 306/students_db","root",""); %>
NB:In the case we get no suitable driver message, we can use Class.forName("com.mysql.jdbc.Driver").newInstance(); before connection or we can go to services, drivers and add mysql driver. Dont forget to add the mysql connect driver also in the library folder.

Entry Form - First Attempt


Statement Code
<% // Create the statement Statement statement = conn.createStatement(); // Use the statement to SELECT the student attributes // FROM the Student table. ResultSet rs = statement.executeQuery ("SELECT * FROM Students"); %>

Entry Form - First Attempt


Presentation Code
<table> <tr> <th>SSN</th> <th>First</th> <th>Last</th> <th>College</th> </tr> <% // Iterate over the ResultSet while ( rs.next() ) { %> Iteration Code <% } %> </table>

Entry Form - First Attempt

Entry Form - First Attempt


Iteration Code
<tr> <%-- Get the SSN, which is a number --%> <td><%= rs.getInt("SSN") %></td> <%-- Get the ID --%> <td><%= rs.getString("ID") %></td> <%-- Get the FIRSTNAME --%> <td><%= rs.getString("FIRSTNAME") %></td> <%-- Get the LASTNAME --%> <td><%= rs.getString("LASTNAME") %></td> <%-- Get the COLLEGE --%> <td><%= rs.getString("COLLEGE") %></td> </tr>

Entry Form - First Attempt


Close Connectivity Code
<% // Close the ResultSet rs.close(); // Close the Statement statement.close(); // Close the Connection conn.close();

} catch (SQLException sqle) { out.println(sqle.getMessage()); } catch (Exception e) { out.println(e.getMessage()); } %>

Entry Form - Second Attempt

Entry Form - Second Attempt


JSP Code
<html> <body> <table> <tr> <td> Open connection code Insertion Code Statement code Presentation code Close connection code </td> </tr> </table> </body> </html>

Entry Form - Second Attempt


Insertion Code
// Check if an insertion is requested String action = request.getParameter("action"); if (action != null && action.equals("insert")) { conn.setAutoCommit(false); // Create the prepared statement and use it to // INSERT the student attrs INTO the Students table. PreparedStatement pstmt = conn.prepareStatement( ("INSERT INTO Students VALUES (?, ?, ?, ?, ?)")); pstmt.setInt(1,Integer.parseInt(request.getParameter("SSN"))); pstmt.setString(2, request.getParameter("ID")); pstmt.setString(3,request.getParameter("FIRSTNAME")); pstmt.setString(4,request.getParameter("LASTNAME")); pstmt.setString(5,request.getParameter("COLLEGE")); pstmt.executeUpdate(); conn.commit(); conn.setAutoCommit(true); }

Entry Form - Second Attempt


Presentation Code
<table> <tr> <th>SSN</th> <th>First</th> <th>Last</th> <th>College</th> </tr> Insert Form Code <% // Iterate over the ResultSet while ( rs.next() ) { %> Iteration Code <% } %> </table>

Entry Form - Second Attempt


Insert Form Code
<tr> <form action="students.jsp" method="get"> <input type="hidden" value="insert" name="action"> <th><input value="" name="SSN" size="10"></th> <th><input value="" name="ID" size="10"></th> <th><input value="" name="FIRSTNAME" size="15"></th> <th><input value="" name="LASTNAME" size="15"></th> <th><input value="" name="COLLEGE" size="15"></th> <th><input type="submit" value="Insert"></th> </form> </tr>

Entry Form - Third Attempt

Entry Form - Third Attempt


JSP Code
<html> <body> <table> <tr> <td> Open connection code Insertion Code Update Code Delete Code Statement code Presentation code Close connection code </td> </tr> </table> </body> </html>

Entry Form - Third Attempt


Update Code
// Check if an update is requested if (action != null && action.equals("update")) { conn.setAutoCommit(false); // Create the prepared statement and use it to // UPDATE the student attributes in the Student table. PreparedStatement pstatement = conn.prepareStatement( "UPDATE Students SET ID = ?, FIRSTNAME = ?, " + "LASTNAME = ?, COLLEGE = ? WHERE SSN = ?"); pstatement.setString(1, request.getParameter("ID")); pstatement.setString(2, request.getParameter("FIRSTNAME")); pstatement.setString(3,request.getParameter("LASTNAME")); pstatement.setString(4,request.getParameter("COLLEGE")); pstatement.setString(5,request.getParameter("SSN")); int rowCount = pstatement.executeUpdate(); //conn.setAutoCommit(false); conn.setAutoCommit(true); }

Entry Form - Third Attempt


Delete Code
// Check if a delete is requested if (action != null && action.equals("delete")) { conn.setAutoCommit(false); // Create the prepared statement and use it to // DELETE the student FROM the Student table. PreparedStatement pstmt = conn.prepareStatement( "DELETE FROM Student WHERE SSN = ?"); pstmt.setInt(1, Integer.parseInt(request.getParameter("SSN"))); int rowCount = pstmt.executeUpdate(); //conn.setAutoCommit(false); conn.setAutoCommit(true); }

Entry Form - Third Attempt


Presentation Code
<table> <tr> <th>SSN</th> <th>First</th> <th>Last</th> <th>College</th> </tr> Insert Form Code <% // Iterate over the ResultSet while ( rs.next() ) { %> Iteration Code <% } %> </table>

Entry Form - Third Attempt


Iteration Code changed
<tr> <form action="students.jsp" method="get"> <input type="hidden" value="update" name="action"> <td><input value="<%= rs.getInt("SSN") %>" name="SSN"></td> <td><input value="<%= rs.getString("ID") %>" name="ID"></td> <td><input value=" <%= rs.getString("first_name") %>" name="FIRSTNAME"></td> <td><input value="<%= rs.getString("last_name") %>" name="LASTNAME"></td> <td><input value=" <%= rs.getString("college") %>" name="COLLEGE"></td> <td><input type="submit" value="Update"></td> </form> <form action="students2.jsp" method="get"> <input type="hidden" value="delete" name="action"> <input type="hidden" value="<%= rs.getInt("SSN") %>" name="SSN"> <td><input type="submit" value="Delete"></td> </form> </tr>

You might also like