Title: Active Server Pages
1Active Server Pages
- ASP is Microsofts server-side script engine for
dynamically-generated web pages. - Most common language used is VBScript. If you use
JavaScript, then you have your JSP.
2A summary of the code for the JSP
- Although a JSP looks much like an HTML page, a
JSP contains embedded Java code. - To code a scriptlet that contains one or more
Java statements, you use the lt and gt tags. - To display any expression that can be converted
to a string, you use the lt and gt tags. - When you code a JSP, you can use the implicit
request object. This object is named request. - You can use the getParameter method of the
request object to get the values of the
parameters that are passed to the JSP.
3The syntax for a JSP scriptlet
- lt Java statements gt
-
- The syntax for a JSP expression
- lt any Java expression that can be converted to
a string gt -
- The syntax for getting a parameter from the
implicit request object - request.getParameter(parameterName)
4Two scriptlets and an expression that display an
HTML line 5 times
- lt
- int numOfTimes 1
- while (numOfTimes lt 5)
- gt
- lth1gt This line is shown lt numOfTimes gt of
5 times. - lt/h1gt
- lt
- numOfTimes
-
- gt
5How to code scriptlets and expressions
- Within a scriptlet, you can code one or more
complete Java statements. Because these
statements are Java statements, you must end each
one with a semicolon. - Within a JSP expression, you can code any Java
expression that evaluates to a string. This
includes Java expressions that evaluate to any of
the primitive types, and it includes any object
that has a toString method. - Because a JSP expression is an expression, not a
statement, you dont end it with a semicolon.
6A scriptlet that determines if a checkbox is
checked
- lt
- String rockCheckBox request.getParameter("Rock")
- // returns the value "on" if checked, null
otherwise. - if (rockCheckBox ! null)
- gt
- You checked Rock music!
- lt
- gt
7A scriptlet that reads and displays multiple
values from a list box
- lt
- String selectedCountries
request.getParameterValues("country") - // returns the values of items selected in
list box. - for (int i 0 i lt selectedCountries.length
i) - gt
- lt selectedCountriesi gt ltbrgt
- lt
-
- gt
8Where and how to save a JSP
- JSPs are normally saved in the same directory as
the HTML pages. This directory should be a
subdirectory of the web applications directory
for your server. - If youre running Tomcat on your PC, that
directory is usually c\tomcat\webapps or
c\jakarta-tomcat\webapps. - If youre using Tomcat on your local system, you
can also use webapps\ROOT as the root directory
for your applications. - To make sure that the filename for a JSP is saved
with the jsp extension when youre using an HTML
or text editor, you can enter the filename within
quotes.
9How to request a JSP
- When you use the Get method to request a JSP from
an HTML form, the parameters are automatically
appended to the URL. - When you code or enter a URL that requests a JSP,
you can add a parameter list to it starting with
a question mark and with no intervening spaces.
Then, each parameter consists of its name, an
equals sign, and its value. - To code multiple parameters, use ampersands ()
to separate the parameters.
10A Form tag that requests a JSP
- ltform action"show_email_entry.jsp" method"get"gt
- Two URLs that request a JSP
- http//localhost8080/murach/email4/show_email_ent
ry.jsp - http//www.murach.com/email4/show_email_entry.jsp
- How to include parameters
- show_email_entry.jsp?firstNameJohn
- show_email_entry.jsp?firstNameJohnlastNameSmith
11Some JSP tags
- Tag Name Purpose
- lt gt JSP scriptlet To insert a block of Java
statements. - lt gt JSP expression To display the string
value of an expression. - lt_at_ gt JSP directive To set conditions that
apply to the entire JSP. - lt-- --gtJSP comment To tell the JSP engine to
ignore code.
12A JSP comment
- lt--
- Todays date is lt new java.util.Date() gt.
- --gt
13A JSP that displays the date and an instance
variable
14The code for the JSP
- lt!doctype html public "-//W3C//DTD HTML 4.0
Transitional//EN"gt - lthtmlgt
- ltheadgt
- lttitlegtChapter 4 - Email List
applicationlt/titlegt - lt/headgt
- ltbodygt
- lt_at_ page import "business.User, data.UserIO,
java.util.Date, java.io." gt - lt! int accessCount 0 gt
- lt! String file "../webapps/murach/WEB-INF/etc/
UserEmail.txt" gt - lt String firstName request.getParameter("first
Name") - String lastName request.getParameter("lastNa
me") - String emailAddress request.getParameter("em
ailAddress") - User user new User(firstName, lastName,
emailAddress) - UserIO.addRecord(user, file)
15The code for the JSP (continued)
- int localCount 0
- synchronized (this)
- accessCount
- localCount accessCount
-
- gt
- lt!-- missing code --gt
- Todays date is lt new Date() gt. ltbrgt
- ltigtThis page has been accessed lt localCount gt
- times.lt/igt
- lt/bodygt
- lt/htmlgt
16- How to use Java to work with a database
17How to connect to a database
- Before you can get or modify the data in a
database, you need to connect to it. To do that,
you use the forName method of the Class class to
load the driver. Then, you use the getConnection
method of the DriverManager class to return a
Connection object. - When you use the forName method of the Class
class, you must supply the driver name. This
method throws a ClassNotFoundException. - When you use the getConnection method of the
DriverManager class, you must supply a URL for
the database, a username, and a password. This
method throws a SQLException. - Although the connection string for each driver is
different, the documentation for the driver
should explain how to write a connection string
for that driver.
18Database URL syntax
- jdbcsubprotocolNamedatabaseURL
- How to connect to a MySQL db named murach
- Connection connection null
- try
- Class.forName("org.gjt.mm.mysql.Driver")
- String dbURL "jdbcmysql//localhost/murach"
- String username "root"
- String password ""
- connection DriverManager.getConnection(
dbURL, username, password) -
- catch(ClassNotFoundException e)message
"Database driver not found." - catch(SQLException e)
- message "Error loading database driver "
e.getMessage()
19How to create a result set that contains 1 row
and 1 column
- Statement statement connection.createStatement()
- ResultSet userIDResult statement.executeQuery(
- "SELECT UserID FROM User "
- "WHERE EmailAddress 'jsmith_at_hotmail.com'")
- How to create a result set that contains multiple
columns and rows - Statement statement connection.createStatement()
- ResultSet products statement.executeQuery(
- "SELECT FROM Product ")
20ResultSet methods for forward-only, read-only
result sets
- Method Description
- next() Moves the cursor to the next row in the
result set. - last() Moves the cursor to the last row in the
result set. - close() Releases the result sets JDBC and
database resources. - getRow() Returns an int value that identifies the
current row of the result set.
21Description
- To return a result set to a class, you use the
createStatement method of a Connection object to
create a Statement object. Then, you use the
executeQuery method of the Statement object to
execute a SELECT statement that returns a
ResultSet object. - By default, the createStatement method creates a
forward-only, read-only result set. This means
that you can only move the cursor through it from
the first record to the last and you cant update
it. - When a result set is created, the cursor is
positioned before the first row. Then, you can
use the methods of the ResultSet object to move
the cursor. - The createStatement, executeQuery, and next
methods throw an SQLException. As a result, any
code that uses these methods needs to catch or
throw this exception.
22How to retrieve data from a result set
- The getXXX methods can be used to return all
eight primitive types. For example, the getInt
method returns the int type and the getLong
method returns the long type. - The getXXX methods can also be used to return
strings, dates, and times. For example, the
getString method returns any object of the String
class, and the getDate, getTime, and getTimestamp
methods return objects of the Date, Time, and
Timestamp classes of the java.sql package.
23How to use the executeUpdate method to add a
record
- String query "INSERT INTO Product
(ProductCode, ProductDescription, ProductPrice)
" "VALUES ( " product.getCode() " , "
" " product.getDescription() "
, " " " product.getPrice() "
)" - Statement statement connection.createStatement()
- int rowCount statement.executeUpdate(query)
24How to use the executeUpdate method to update a
record
- String query "UPDATE Product SET "
"ProductCode " product.getCode() ", "
"ProductDescription " product.getDescription
() ", " "ProductPrice "
product.getPrice() " " "WHERE ProductCode
" product.getCode() "" - Statement statement connection.createStatement()
- int rowCount statement.executeUpdate(query)
25How to use the executeUpdate method to delete a
record
- String query "DELETE FROM Product "
"WHERE ProductCode " - productCode " "
- Statement statement connection.createStatement()
- int rowCount statement.executeUpdate(query)
26The SQL Gateway application executing an INSERT
statement
27The SQL Gateway application after executing a
SELECT statement
28The JSP code (sql_gateway.jsp)
- lt!doctype html public "-//W3C//DTD HTML 4.0
Transitional//EN"gt - lt
- String sqlStatement (String)
session.getAttribute("sqlStatement") - if (sqlStatement null) sqlStatement ""
- String message (String) session.getAttribute(
"message") - if (message null) message ""
- gt
- lthtmlgt
- ltheadgt
- lttitlegtChapter 11 - The SQL Gateway
applicationlt/titlegt - lt/headgt
- ltbodygt
- lth1gtThe SQL Gatewaylt/h1gt
- ltpgtEnter an SQL statement and click the Execute
button. Then, information about the ltbrgt - statement will appear at the bottom of this
page.lt/pgt
29The JSP code (continued)
- ltform action"../servlet/sql11.SQLGatewayServlet"
method"post"gt - ltbgtSQL statementlt/bgtltbrgt
- lttextarea name"sqlStatement" cols60 rows8gt
- lt sqlStatement gt
- lt/textareagtltbrgt
- ltbrgt
- ltinput type"submit" value"Execute"gt
- lt/formgt
- ltpgt
- ltbgtSQL resultlt/bgtltbrgt
- lttable cellpadding"5" border"1"gt
- lt message gt
- lt/tablegt
- lt/pgt
- lt/bodygt
- lt/htmlgt