jsp and jdbc - carnegie mellon universitymm6/95-733/powerpoint/jspjdbc.pdf · internet technologies...
TRANSCRIPT
![Page 1: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/1.jpg)
Internet Technologies 1
JSP and JDBC
• JSP’s and Scope• A Shopping cart application using JSP and
JavaBeans• A Simple JSP/JDBC Example• A JSP/JDBC Example using connection
poolingMuch of this lecture is from a book entitled “Pure JSP” by Goodwill publishedby SAMS
![Page 2: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/2.jpg)
Internet Technologies 2
Page Scope
Beans with page scope are accessible only within the page where they were created.
A bean with page-level scope is not persistent between requests or outside the page
![Page 3: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/3.jpg)
Internet Technologies 3
Page Scope Example/* A simple bean that counts visits. */import java.io.*;
public class Counter implements Serializable {private int count = 1;public Counter() {}public int getCount() { return count++; }public void setCount(int c) { count = c; }
}
![Page 4: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/4.jpg)
Internet Technologies 4
Under Tomcat
webapps
myApplication
SomeFile.jspWEB-INF
web.xmlclasses
Counter.java
![Page 5: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/5.jpg)
Internet Technologies 5
<%-- Use the Counter bean with page scope. --%><%-- The Counter class must be imported. Its in the WEB-INF/classes directory --%>
<%@ page import="Counter" %> <jsp:useBean id = "ctr" scope = "page" class = "Counter" /><html>
<head><title>Page Bean Example</title>
</head><body>
<h3>Page Bean Example </h3><center>
<b>The current count for the counter bean is: </b><jsp:getProperty name = "ctr" property ="count" />
</center></body>
</html>
![Page 6: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/6.jpg)
Internet Technologies 6The count never changes.
![Page 7: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/7.jpg)
Internet Technologies 7
One Page May Call Another<%-- Caller page Caller.jsp --%>
<html><head>
<title>Caller page </title></head><body>
<h1> Caller page </h1><jsp:forward page = "Callee.jsp" />
</body></html>
Any response data is cleared and controlpasses to the new page.
![Page 8: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/8.jpg)
Internet Technologies 8
Callee.jsp<%-- Callee page --%>
<html><head>
<title>Callee page </title></head><body>
<h1> Callee page </h1></body>
</html>
![Page 9: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/9.jpg)
Internet Technologies 9
After Visiting Caller.jsp
![Page 10: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/10.jpg)
Internet Technologies 10
Request Scope
• One page may call another and the bean is still available.• Its considered one request.• The second page will use an existing bean before creating a
new one.• When the current request is complete the bean is reclaimed
by the JVM.
![Page 11: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/11.jpg)
Internet Technologies 11
Request Scope Caller.jsp<%-- Caller page --%><%@ page import="Counter" %>
<jsp:useBean id = "ctr" scope = "request" class = "Counter" /><html>
<head><title>Caller page </title><jsp:setProperty name = "ctr" property = "count" value = "10" />
</head><body>
<h1> Caller page </h1><jsp:forward page = "Callee.jsp" />
</body></html>
![Page 12: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/12.jpg)
Internet Technologies 12
Request Scope Callee.jsp<%-- Callee page --%><%@ page import="Counter" %> <jsp:useBean id = "ctr" scope = "request" class = "Counter" /><html>
<head><title>Callee page </title>
</head><body>
<h1> Callee page </h1><jsp:getProperty name = "ctr" property ="count" />
</body></html>
![Page 13: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/13.jpg)
Internet Technologies 13
After Visiting Caller.jsp
![Page 14: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/14.jpg)
Internet Technologies 14
Session Scope
Beans with session scope are accessible within pages processingrequests that are in the same session as the one in which thebean was created.
Session lifetime is typically configurable and is controlled bythe servlet container. Currently, my session ends when thebrowser exits.
Multiple copies of the same browser each get their own session bean.
![Page 15: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/15.jpg)
Internet Technologies 15
Session Scope Example<%-- SessionBeanPage.jsp --%><%@ page import="Counter" %> <jsp:useBean id = "ctr" scope = "session" class = "Counter" /><html>
<head><title>Session Bean Page </title>
</head><body>
<h1> Session Bean Page </h1><B>Visit number
<jsp:getProperty name = "ctr" property = "count"/> </B>
</body></html>
![Page 16: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/16.jpg)
Internet Technologies 16
Session Scope Example
The counter increments on each hit till browser exits. New browserback to 1.
![Page 17: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/17.jpg)
Internet Technologies 17
Application Beans
A bean with a scope value of application has an even broaderand further reaching availability than session beans.
Application beans exist throughout the life of the JSP containeritself, meaning they are not reclaimed until the server is shutdown.
Session beans are available on subsequent requests from the samebrowser. Application beans are shared by all users.
![Page 18: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/18.jpg)
Internet Technologies 18
Application Bean Example 1<%-- ApplicationBeanPage1.jsp --%><%@ page import="Counter" %> <jsp:useBean id = "ctr" scope = "application" class = "Counter" /><html>
<head><title>Application Bean Page </title>
</head><body>
<h1> Application Bean Page </h1><B>Visit number <jsp:getProperty name = "ctr“
property = "count"/> </B></body>
</html>
![Page 19: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/19.jpg)
Internet Technologies 19
Application Bean Example 2<%-- ApplicationBeanPage2.jsp --%><%@ page import="Counter" %>
<jsp:useBean id = "ctr" scope = "application" class = "Counter" /><html>
<head><title>Application Bean Page Two </title>
</head><body>
<h1> Application Bean Page Two </h1><B>Visit number <jsp:getProperty name = "ctr“
property = "count"/> </B></body>
</html>
![Page 20: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/20.jpg)
Internet Technologies 20
After several visits with IE5 we visit with Netscape.
![Page 21: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/21.jpg)
Internet Technologies 21
After visiting from a different machines with a different browsers,we still keep count.
![Page 22: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/22.jpg)
Internet Technologies 22
A Shopping Cart
AddToShoppingCart.jsp
![Page 23: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/23.jpg)
Internet Technologies 23
ShoppingCart.jsp
![Page 24: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/24.jpg)
Internet Technologies 24
The Bean – ShoppingCart.java// Adapted from From James Goodwill Pure JSP// ShopingCart.java
import java.util.*;
public class ShoppingCart implements Serializable {
protected Hashtable items = new Hashtable();
public ShoppingCart() {}
![Page 25: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/25.jpg)
Internet Technologies 25
public void addItem(String itemId, String description, float price, int quantity) {
// pack the item as an array of StringsString item[] = { itemId, description, Float.toString(price),
Integer.toString(quantity)};
// if item not yet in table then add itif(! items.containsKey(itemId)) {
items.put(itemId, item);}else { // the item is in the table already
String tempItem[] = (String[])items.get(itemId);int tempQuant = Integer.parseInt(tempItem[3]);quantity += tempQuant;tempItem[3] = Integer.toString(quantity);
}
}
Get a reference to a hashtable entry.
Change it.
![Page 26: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/26.jpg)
Internet Technologies 26
public void removeItem(String itemId) {
if(items.containsKey(itemId)) {
items.remove(itemId);}
} public void updateQuantity(String itemId, int quantity) {
if(items.containsKey(itemId)) {
String[] tempItem = (String[]) items.get(itemId);tempItem[3] = Integer.toString(quantity);
}}
public Enumeration getEnumeration() {
return items.elements();}
![Page 27: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/27.jpg)
Internet Technologies 27
public float getCost() {
Enumeration enum = items.elements();String[] tempItem;float totalCost = 0.00f;
while(enum.hasMoreElements()) {
tempItem = (String[]) enum.nextElement();totalCost += (Integer.parseInt(tempItem[3]) *
Float.parseFloat(tempItem[2]));}return totalCost;
}
![Page 28: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/28.jpg)
Internet Technologies 28
public int getNumOfItems() {
Enumeration enum = items.elements();String tempItem[];int numOfItems = 0;while(enum.hasMoreElements()) {
tempItem = (String[]) enum.nextElement();numOfItems += Integer.parseInt(tempItem[3]);
}return numOfItems;
}
![Page 29: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/29.jpg)
Internet Technologies 29
public static void main(String a[]) {
ShoppingCart cart = new ShoppingCart();
cart.addItem("A123", "Bike", (float)432.46, 10);cart.addItem("A124", "Bike", (float)732.46, 5);System.out.println(cart.getNumOfItems()); System.out.println(cart.getCost()); cart.updateQuantity("A123", 2);System.out.println(cart.getNumOfItems()); cart.addItem("A123", "Bike", (float)432.46, 4); System.out.println(cart.getNumOfItems());
}
} D:\Apache Tomcat 4.0\webapps\myjsp\WEB-INF\classes>java ShoppingCart157986.9004711
![Page 30: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/30.jpg)
Internet Technologies 30
AddToShoppingCart.jsp<!-- Adapted from From James Goodwill Pure JSP --><%@ page errorPage = "errorpage.jsp" %><%@ page import="ShoppingCart" %><%@ page language = "java" %>
<jsp:useBean id = "cart" scope = "session" class = "ShoppingCart" />
<html><head><title>DVD Catalog </title>
</head>
![Page 31: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/31.jpg)
Internet Technologies 31
<%
String id = request.getParameter("id");
if(id != null) {
String desc = request.getParameter("desc");Float price = new Float(request.getParameter("price"));
cart.addItem(id, desc, price.floatValue(), 1);}
%> JSP uses java as the scriptinglanguage. Think of this codeas being a part of the resultingservlet.
We have access tothe request object.
Add an item to thebean.
It will be null on thefirst visit.
![Page 32: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/32.jpg)
Internet Technologies 32
<a href = "ShoppingCart.jsp"> Shopping Cart Quantity </a><%= cart.getNumOfItems() %><hr><center>
<h3> DVD Catalog </h3></center><table border = "1" width = "300“
cellspacing = "0" cellpadding = "2" align = "center" ><tr>
<th> Description </th> <th> Price </th>
</tr>
This is a JSP expression.It’s evaluated and sentto the response object.
It will change every timeThe servlet is hit within this session.
![Page 33: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/33.jpg)
Internet Technologies 33
<tr><form action = "AddToShoppingCart.jsp" method = "post" >
<td>Happy Gilmore</td><td>$19.95</td><td>
<input type = "submit" name = "submit" value = "add"> </td>
<input type = "hidden" name = "id" value = "1" ><input type = "hidden" name = "desc" value = "Happy Gilmo<input type = "hidden" name = "price" value = "10.95" >
</form></tr> If this form is clicked we execute
this same servlet but pass backthe hidden form fields.
![Page 34: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/34.jpg)
Internet Technologies 34
<tr>
<form action = "AddToShoppingCart.jsp" method = "post" >
<td>Brassed Off Full Monty</td><td>$23.99</td><td>
<input type = "submit" name = "submit" value = "add"> </td>
<input type = "hidden" name = "id" value = "2" ><input type = "hidden" name = "desc" value =
"Brassed Off Full Monty" ><input type = "hidden" name = "price" value = "12.99" >
</form></tr>
Hidden data going backto the server.
![Page 35: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/35.jpg)
Internet Technologies 35
<form action = "AddToShoppingCart.jsp" method = "post" >
<td>FlashDance</td><td>$12.95</td><td>
<input type = "submit" name = "submit" value = "add"> </td>
<input type = "hidden" name = "id" value = "3" ><input type = "hidden" name = "desc" value =
"FlashDance" ><input type = "hidden" name = "price" value = "17.05" >
</form></tr>
</table></body>
<html>
![Page 36: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/36.jpg)
Internet Technologies 36
ShoppingCart.jsp<!-- Adapted from From James Goodwill Pure JSP -->
<%@ page errorPage = "errorpage.jsp" %><%@ page import = "java.util.*" %><%@ page import="ShoppingCart" %><%@ page language = "java" contentType="text/html" %>
<jsp:useBean id = "cart" scope = "session" class = "ShoppingCart" />
We have access to the same bean.
![Page 37: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/37.jpg)
Internet Technologies 37
<html><head>
<title> Shopping Cart Contents </title></head><body>
<center><table width = "300" border = "1" cellspacing = "0"
cellpadding = "2" border = "0" ><caption>
<b> Shopping Cart Contents </b></caption><tr>
<th> Description </th><th> Price </th><th> Quantity </th>
</tr>
![Page 38: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/38.jpg)
Internet Technologies 38
<%
Enumeration enum = cart.getEnumeration();String tempItem[];
while(enum.hasMoreElements()) {
tempItem = (String[]) enum.nextElement();
%>
This loop executes within theservlet.
Notice that the loop has notended but we are done with javafor the moment…
![Page 39: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/39.jpg)
Internet Technologies 39
<tr><td>
<%= tempItem[1] %></td><td align = "center">
<%= "$" + tempItem[2] %></td><td align = "center">
<%= tempItem[3] %></td>
</tr><% } %>
</table></center><a href = "AddToShoppingCart.jsp">Back to Catalog </a></body></html>
We start generating html to the response object (in the loop).
End of loop. Java code is Enclosed within the <% .. %>
![Page 40: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/40.jpg)
Internet Technologies 40
A Simple JSP/JDBC Example
stocks.mdb database schemaThere are three tables. Both customer and stocks have a one-to-many relationship with portfolios. The database stocks.mdbwas registered with the ODBC driver as “CoolStocks”
customer stocks portfolioid symbol idlname company symbolfname price num_shares
![Page 41: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/41.jpg)
Internet Technologies 41
Register w/ODBCCreate an ODBC data source.Click on the Start button.Choose Settings, Control PanelDouble-click on ODBC Data SourcesChoose the System DSN tabClick AddClick on the desired driver (MSAccess)Click on the Finish buttonEnter a Data Source Name (I called my database CoolStocksand that name appears in the java code below)Click on the Select buttonLocate the directory and file containing your database. This will bethe “stock.mdb” file created by Microsoft Access.Click OK
![Page 42: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/42.jpg)
Internet Technologies 42
A Simple JSP/JDBC Example<TITLE>JSP JDBC Example 1</TITLE></HEAD>
<BODY><!– Adapted from James Goodwill’s Pure JSP <!-- Set the scripting language to java and --><!-- import the java.sql package --><%@ page language="java" import="java.sql.*" %><%@ page import= "java.io.*" %>
![Page 43: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/43.jpg)
Internet Technologies 43
<%Connection con = null;try {// Load the Driver class fileClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// Make a connection to the ODBC datasource Movie Catalogcon = DriverManager.getConnection("jdbc:odbc:CoolStocks");
// Create the statementStatement statement = con.createStatement();
// Use the created statement to SELECT the DATA// FROM the customer Table.ResultSet rs = statement.executeQuery("SELECT * " +"FROM customer");
// Iterate over the ResultSet%>
![Page 44: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/44.jpg)
Internet Technologies 44
<!-- Add an HTML table to format the results --><TABLE BORDER="1"><TR><TH> Customer - ID</TH><TH>Last Name</TH><TH>First Name</TH><%while ( rs.next() ) {
// get the id, convert to Stringout.println("<TR>\n<TD>" + rs.getString("id") + "</TD>");
// get the last nameout.println("<TD>" + rs.getString("lname") + "</TD>");
// get the first nameout.println("<TD>" + rs.getString("fname") + "</TD>\n</TR");
}
![Page 45: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/45.jpg)
Internet Technologies 45
// Close the ResultSetrs.close();
}catch (IOException ioe) {out.println(ioe.getMessage());
}catch (SQLException sqle) {out.println(sqle.getMessage());
}catch (ClassNotFoundException cnfe) {out.println(cnfe.getMessage());
}catch (Exception e) {out.println(e.getMessage());
}
![Page 46: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/46.jpg)
Internet Technologies 46
finally {try {if ( con != null ) {
// Close the connection no matter whatcon.close();
}}catch (SQLException sqle) {
out.println(sqle.getMessage());}
}
%></BODY></HTML>
![Page 47: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/47.jpg)
Internet Technologies 47
It Works!
![Page 48: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/48.jpg)
Internet Technologies 48
An Example Using Connection Pooling
The example above opens a connection every timethere is a visit.
Goodwill presents another approach in chapter 14.
![Page 49: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/49.jpg)
Internet Technologies 49
PooledConnection.java
// Adapted from Goodwill's Pure JSPimport java.sql.*;
public class PooledConnection {
// Real JDBC Connectionprivate Connection connection = null;// boolean flag used to determine if connection is in useprivate boolean inuse = false;
![Page 50: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/50.jpg)
Internet Technologies 50
// Constructor that takes the passed in JDBC Connection// and stores it in the connection attribute.public PooledConnection(Connection value) {if ( value != null ) {connection = value;
}}
// Returns a reference to the JDBC Connectionpublic Connection getConnection() {return connection;
}
![Page 51: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/51.jpg)
Internet Technologies 51
// Set the status of the PooledConnection.public void setInUse(boolean value) {inuse = value;
}// Returns the current status of the PooledConnection.public boolean inUse() {return inuse;
}// Close the real JDBC Connectionpublic void close() {try {connection.close();
}catch (SQLException sqle) {System.err.println(sqle.getMessage());
}}
}
![Page 52: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/52.jpg)
Internet Technologies 52
ConnectionPool.java// Adapted from James Goodwill's Pure Java
import java.sql.*;import java.util.*;
public class ConnectionPool {
// JDBC Driver Nameprivate String driver = null;// URL of databaseprivate String url = null;// Initial number of connections.private int size = 0;
![Page 53: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/53.jpg)
Internet Technologies 53
// Usernameprivate String username = new String("");// Passwordprivate String password = new String("");// Vector of JDBC Connectionsprivate Vector pool = null;
public ConnectionPool() {
}
// Set the value of the JDBC Driverpublic void setDriver(String value) {if ( value != null ) {driver = value;
}}
![Page 54: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/54.jpg)
Internet Technologies 54
// Get the value of the JDBC Driverpublic String getDriver() {return driver;
}
// Set the URL Pointing to the Datasourcepublic void setURL(String value ) {if ( value != null ) {url = value;
}}
// Get the URL Pointing to the Datasourcepublic String getURL() {return url;
}
![Page 55: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/55.jpg)
Internet Technologies 55
// Set the initial number of connectionspublic void setSize(int value) {if ( value > 1 ) {size = value;
}}
// Get the initial number of connectionspublic int getSize() {return size;
}// Set the usernamepublic void setUsername(String value) {if ( value != null ) {username = value;
}}
![Page 56: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/56.jpg)
Internet Technologies 56
// Get the usernamepublic String getUserName() {return username;
}
// Set the passwordpublic void setPassword(String value) {if ( value != null ) {password = value;
}}// Get the passwordpublic String getPassword() {return password;
}
![Page 57: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/57.jpg)
Internet Technologies 57
// Creates and returns a connectionprivate Connection createConnection() throws Exception {
Connection con = null;
// Create a Connectioncon = DriverManager.getConnection(url,username, password);
return con;}
![Page 58: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/58.jpg)
Internet Technologies 58
// Initialize the poolpublic synchronized void initializePool() throws Exception {
// Check our initial valuesif ( driver == null ) {throw new Exception("No Driver Name Specified!");}if ( url == null ) {throw new Exception("No URL Specified!");}if ( size < 1 ) {throw new Exception("Pool size is less than 1!");
}
![Page 59: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/59.jpg)
Internet Technologies 59
// Create the Connectionstry {// Load the Driver class fileClass.forName(driver);// Create Connections based on the size memberfor ( int x = 0; x < size; x++ ) {
Connection con = createConnection();if ( con != null ) {// Create a PooledConnection to encapsulate the// real JDBC ConnectionPooledConnection pcon = new PooledConnection(con);// Add the Connection to the pool.addConnection(pcon);
}}
}
![Page 60: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/60.jpg)
Internet Technologies 60
catch (Exception e) {System.err.println(e.getMessage());throw new Exception(e.getMessage());
}}// Adds the PooledConnection to the poolprivate void addConnection(PooledConnection value) {// If the pool is null, create a new vector// with the initial size of "size"if ( pool == null ) {pool = new Vector(size);
}// Add the PooledConnection Object to the vectorpool.addElement(value);
}
![Page 61: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/61.jpg)
Internet Technologies 61
public synchronized void releaseConnection(Connection con) {
// find the PooledConnection Objectfor ( int x = 0; x < pool.size(); x++ ) {
PooledConnection pcon =(PooledConnection)pool.elementAt(x);
// Check for correct Connectionif ( pcon.getConnection() == con ) {
System.err.println("Releasing Connection " + x);// Set its inuse attribute to false, which// releases it for usepcon.setInUse(false);break;
}}
}
![Page 62: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/62.jpg)
Internet Technologies 62
// Find an available connectionpublic synchronized Connection getConnection()throws Exception {PooledConnection pcon = null;// find a connection not in usefor ( int x = 0; x < pool.size(); x++ ) {pcon = (PooledConnection)pool.elementAt(x);
// Check to see if the Connection is in useif ( pcon.inUse() == false ) {
// Mark it as in usepcon.setInUse(true);// return the JDBC Connection stored in the// PooledConnection objectreturn pcon.getConnection();
}}
![Page 63: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/63.jpg)
Internet Technologies 63
// Could not find a free connection socreate and add a new onetry {
// Create a new JDBC ConnectionConnection con = createConnection();// Create a new PooledConnection, passing it the JDBC Connectionpcon = new PooledConnection(con);// Mark the connection as in usepcon.setInUse(true);// Add the new PooledConnection object to the poolpool.addElement(pcon);
}catch (Exception e) {System.err.println(e.getMessage()); throw new Exception(e.getMessage());
}// return the new Connectionreturn pcon.getConnection();
}
![Page 64: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/64.jpg)
Internet Technologies 64
// When shutting down the pool, you need to first empty it.public synchronized void emptyPool() {
// Iterate over the entire pool closing the// JDBC Connections.for ( int x = 0; x < pool.size(); x++ ) {
System.err.println("Closing JDBC Connection " + x);
PooledConnection pcon =(PooledConnection)pool.elementAt(x);
// If the PooledConnection is not in use, close itif ( pcon.inUse() == false ) {pcon.close();
}
![Page 65: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/65.jpg)
Internet Technologies 65
else {
// If it is still in use, sleep for 30 seconds and// force close.try {
java.lang.Thread.sleep(30000);pcon.close();
}catch (InterruptedException ie) {
System.err.println(ie.getMessage());}
}}
}}
![Page 66: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/66.jpg)
Internet Technologies 66
JDBCPooledExample.jsp<html><body>
<%@ page errorPage="errorpage.jsp" %><%@ page import="java.util.*" %><%@ page import="java.sql.*" %><%@ page import= "java.io.*" %><%@ page import="ConnectionPool" %>
<!-- Instantiate the ConnectionPool bean with an id of "pool" --><jsp:useBean id="pool" scope="application"class="ConnectionPool" />
![Page 67: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/67.jpg)
Internet Technologies 67
<%Connection con = null; try {// The pool is not initializedif ( pool.getDriver() == null ) { // initialize the poolpool.setDriver("sun.jdbc.odbc.JdbcOdbcDriver");pool.setURL("jdbc:odbc:CoolStocks");pool.setSize(5);pool.initializePool();
} // Get a connection from the ConnectionPoolcon = pool.getConnection();// Create the statementStatement statement = con.createStatement();
![Page 68: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/68.jpg)
Internet Technologies 68
// Use the created statement to SELECT the DATA// FROM the customer Table.ResultSet rs = statement.executeQuery("SELECT * " +"FROM customer");
// Iterate over the ResultSet%><!-- Add an HTML table to format the results --><center><table border="1" cellspacing="0" cellpadding="2"width="500"><tr><TH> Customer - ID</TH><TH>Last Name</TH><TH>First Name</TH>
![Page 69: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/69.jpg)
Internet Technologies 69
<%while ( rs.next() ) {
// get the id, convert to Stringout.println("<TR>\n<TD>" + rs.getString("id") + "</TD>");// get the last nameout.println("<TD>" + rs.getString("lname") + "</TD>");// get the first nameout.println("<TD>" + rs.getString("fname") + "</TD>\n</TR");
}
// Close the ResultSetrs.close();out.println("</table></center>");
}catch (IOException ioe) {out.println(ioe.getMessage());
}
![Page 70: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/70.jpg)
Internet Technologies 70
catch (SQLException sqle) {out.println(sqle.getMessage());
}catch (ClassNotFoundException cnfe) {out.println(cnfe.getMessage());
}catch (Exception e) {out.println(e.getMessage());
}finally {try {if ( con != null ) {// release the connection no matter whatpool.releaseConnection(con);
}}
![Page 71: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/71.jpg)
Internet Technologies 71
catch (Exception e) {
out.println(e.getMessage());}
}%></body>
</html>
![Page 72: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/72.jpg)
Internet Technologies 72
It works too!
![Page 73: JSP and JDBC - Carnegie Mellon Universitymm6/95-733/PowerPoint/JSPJDBC.pdf · Internet Technologies 1 JSP and JDBC • JSP’s and Scope • A Shopping cart application using JSP](https://reader031.vdocuments.site/reader031/viewer/2022022020/5b9e004a09d3f2443d8d3a32/html5/thumbnails/73.jpg)
Internet Technologies 73
SummaryConnections take a long time to open.
Transactions are linked to connections and should not normallybe shared.
If you have a very low traffic site then you might open and closethe connection inside the servlet’s doxxx() method.
Perhaps the best approach is to use connection pooling withdifferent roles assigned to different connections. Each visitorhas their own connection with an established role. The connections are only created during server startup.
Using EJB Entity beans would greatly simplify this project