It ensures that the database modifications performed by the nested actions are either committed or rolled back if an exception is thrown by any nested action.
JSTL Transaction Tag provides the capability to run SQL statement in a group. You can run multiple SQL statements at a time. It is called one single transaction. In this transaction either all statments run successfully or all fail if one statement does not run successfully.
Syntax
<sql:transaction dataSource=”<string>” isolation=”<string>”/>
JSTL Transaction Tag has following attribute.
1. dataSource Attribute: Specifies the datasource for the transaction.
2. isolation Attribute: Specifies the level of isolation for the transaction.
JSTL SQL Transaction Tag Example:-
<%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*"%> <%@ page import="java.util.Date,java.text.*" %> <%@ 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>JSTL sql:transaction Tag</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/TEST" user="root" password="cohondob"/> <% Date DoB = new Date("2013/10/23"); int studentId = 1111; %> <sql:transaction dataSource="${snapshot}"> <sql:update var="count"> UPDATE Students SET firstName = 'Sandhya' WHERE Id = 2222 </sql:update> <sql:update var="count"> UPDATE Students SET fistName = 'Sweetu' WHERE Id = 3333 </sql:update> <sql:update var="count"> INSERT INTO Students VALUES (4444,'Neha', 'Verma', '2013/10/23'); </sql:update> </sql:transaction> <sql:query dataSource="${snapshot}" var="result"> SELECT * from Students; </sql:query> <table border="1" width="100%"> <tr> <th>Emp ID</th> <th>First Name</th> <th>Last Name</th> <th>DoB</th> </tr> <c:forEach var="row" items="${result.rows}"> <tr> <td><c:out value="${row.id}"/></td> <td><c:out value="${row.first}"/></td> <td><c:out value="${row.last}"/></td> <td><c:out value="${row.dob}"/></td> </tr> </c:forEach> </table> </body> </html>
Now try to access above JSP, which should display the following result:
Emp ID | First Name | Last Name | DOB |
---|---|---|---|
1111 | Dinesh | Rajput | 2013/10/23 |
2222 | Anu | Rajput | 2013/10/23 |
2222 | Sweetu | Rajput | 2013/10/23 |
2222 | Sandhya | Bansal | 2013/10/23 |