Server-Side Scripting with Java Server Page

Download Report

Transcript Server-Side Scripting with Java Server Page

Server-Side Scripting with Java
Server Page, JSP
ISYS 350
Java Website
• Java Tutorial:
– http://docs.oracle.com/javase/tutorial/
• JSP, Servlet tutorial:
– http://www.jsptut.com/
– http://docs.oracle.com/javaee/5/tutorial/doc/bna
gx.html
– http://www.javatpoint.com/servlet-tutorial
Java Platforms
• Java SE (Standard Edition) provides the core
functionality of the Java programming language. It
defines everything from the basic types and objects of
the Java programming language to high-level classes
that are used for networking, security, database access,
etc.
• Java EE (Enterprise Edition) is built on top of the Java SE
platform for developing and running large-scale, multitiered, scalable, reliable, and secure network
applications.
• Java ME (Mobile Edition) provides an API and a smallfootprint virtual machine for running Java programming language
applications on small devices, like mobile phones.
Using Java Classes
• To develop Java applications, we need to use
many different Java classes.
• Groups of related Java classes are organized
into packages.
• To use a class from a package we use the
“import” statement to import the class.
Common Java packages
Package name
java.lang
java.text
java.util
java.io
java.sql
java.applet
Description
Provides classes fundamental to Java, including
classes that work with primitive data types,
strings, and math functions.
Provides classes to handle text, dates, and
numbers.
Provides various utility classes including those for
working with collections.
Provides classes to read data from files and to
write data to files.
Provides classes to read data from databases and
to write data to databases.
An older package that provides classes to create
an applet.
Common Java packages (continued)
Package name
java.awt
java.awt.event
javax.swing
Description
An older package called the Abstract Window
Toolkit (AWT) that provides classes to create
graphical user interfaces.
A package that provides classes necessary to
handle events.
A newer package called Swing that provides
classes to create graphical user interfaces and
applets.
Hyper Text Transfer Protocol:
Request & Response
HTTP Request
Web Server
Browser
HTTP Response
Web Application
Data Sent with Request and Response
• Request:
– requested URL, cookies, queryString, data from a
form, etc.
• Response:
– Web page content in HTML code
– Cookies
– Etc.
Java Server Pages, JSP
• Java Server Pages (JSP) is a technology that lets
you mix regular, static HTML with dynamicallygenerated HTMLrequest:
• JSP objects:
– Request object: retrieves the values that the client browser
passed to the server during an HTTP request
– Response object: This denotes the HTTP Response
data.
– Session: This denotes the data associated with a specific
session of user. The main use of Session Objects is for
maintaining states when there are multiple page requests.
– Out object: print, println
Methods of request Object
• getParameter(String name): Returns the value
of a request parameter as a String, or null if
the parameter does not exist.
• getQueryString(): Gets any query string that is
part of the HTTP request URI.
• getCookies(): Gets the array of cookies found
in this request.
• getRequestURI(): Gets the URI to the current
JSP page.
• etc.
Methods of response Object
• addCookie(Cookie): Adds the specified cookie
to the response. It can be called multiple
times to set more than one cookie.
• sendRedirect(String): Sends a temporary
redirect response to the client using the
specified redirect location URL.
JSP Out Object
• println: The println method of out object is used
to write the value to the output, including the
newline character.
– Ex. out.println("The Output is:" + ex);
• print: The print method of out object writes the
value to the output without a newline character.
out.print("Welcome!!!");
out.print("To JSP Training");
Output is: Welcome!!! To JSP Training
Use JSP to Process a Form
FORM
• Form attribute:
– Method:
• Preferred method is: Post
– Action: Specify the URL of a program on a server or an email
address to which a form’s data will be submitted.
– Method: Post/Get
<form name="testForm" method="post" action="computeSum.jsp“>
• Button:
– Type = “submit”
<input type="submit" value="ComputeSumJSP" name="btnCompute"/>
The eight primitive data types
Type
byte
short
int
long
Bytes
1
2
4
8
float
4
double
8
char
2
boolean
1
Use
Very short integers from -128 to 127.
Short integers from -32,768 to 32,767.
Integers from -2,147,483,648 to 2,147,483,647.
Long integers from -9,223,372,036,854,775,808 to
9,223,372,036,854,775,807.
Single-precision, floating-point numbers from
-3.4E38 to 3.4E38 with up to 7 significant digits.
Double-precision, floating-point numbers from
-1.7E308 to 1.7E308 with up to 16 significant
digits.
A single Unicode character that’s stored in two
bytes.
A true or false value.
In addition to the eight primitive data types listed above, the Java
programming language also provides special support for character strings
via the java.lang. String class. String s = "this is a string";.
Compute the Sum of 2 Numbers:
Form Example
<body>
<div>Compute the sum of two numbers</div>
<form name="testForm" method="post" action="computeSum.jsp">
Enter num1: <input type="text" name="num1" value="" /><br>
Enter num2: <input type="text" name="num2" value="" /><br><br>
<input type="submit" value="ComputeSumJSP"
name="btnCompute"/>
</form>
</body>
Example of JSP scriptlet <% %>
Compute the Sum of 2 Numbers:
<body>
<%
String value1, value2;
double n1, n2, sum;
value1=request.getParameter("num1");
value2=request.getParameter("num2");
n1= Double.parseDouble(value1);
n2= Double.parseDouble(value2);
sum=n1+n2;
out.println("The sum is:" + sum);
%>
</body>
Note 1: Double is an object that offers the parseDouble method, not “double”
data type.
Note 2: “out” is an implicit object that does not need to be declared. It is
already predefined .
Writing HTML code as output
<body>
<%
String value1, value2;
double n1, n2, sum;
value1=request.getParameter("num1");
value2=request.getParameter("num2");
n1= Double.parseDouble(value1);
n2= Double.parseDouble(value2);
sum=n1+n2;
out.println(" <p>Value1: <input type=‘text' name='num1' size='20' value='" + value1
+ "'></p>");
out.println(" <p>Value2: <input type='text' name='num2' size='20' value='" + value2
+ "'></p>");
out.println("The sum is: <input type='text' name='sum' size='20' value='" + sum +
"'>" );
%>
</body>
Embed JSP code in HTML
Using JSP Expression: <%= %>
<%
String value1, value2;
double n1, n2, sum;
value1=request.getParameter("num1");
value2=request.getParameter("num2");
n1= Double.parseDouble(value1);
n2= Double.parseDouble(value2);
sum=n1+n2;
%>
<form method="POST" name="testForm" >
<p>Value1: <input type="text" name="num1" size="20" value="<%=value1%>"></p>
<p>Value2: <input type="text" name="num2" size="20" value="<%=value2%>"></p>
<p> Sum is: <input type="text" name="num2" size="20" value="<%=sum%>"></p>
</form>
Import Java Class
Example: Display Current Date Time
• Import java.util.Date
– <%@page import="java.util.Date"%>
• Define a Date type variable:
– Date currentDate = new Date();
• Display in textbox using JSP expression:
<p>The time is: <input type="text" name="num2" size="20"
value="<%=currentDate%>"></p>
Date to Date Format
• Import class:
– <%@page import="java.text.SimpleDateFormat"%>
– Define a format:
• SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");
– Convert:
• Example: Display a date with date format:
String displayDate = formatter.format(currentDate);
Compute Future Value:
Process form with various controls
Form Code
<form name="fvForm" method="post" action="computeFV.jsp">
Enter present value: <input type="text" name="PV" value="" /><br><br>
Select interest rate: <select name="Rate">
<option value=.04>4%</option>
<option value=.05>5%</option>
<option value=.06>6%</option>
<option value=.07>7%</option>
<option value=.08>8%</option>
</select><br><br>
Select year: <br>
<input type="radio" name="Year" value="10" />10-year<br>
<input type="radio" name="Year" value="15" />15-year<br>
<input type="radio" name="Year" value="30" />30-year<br><br>
<input type="submit" value="ComputeFVJSP" name="btnCompute" />
</form>
JSP Code Example
<body>
<%
String myPV, myRate, myYear;
myPV=request.getParameter("PV");
myRate=request.getParameter("Rate");
myYear=request.getParameter("Year");
double FV, PV, Rate, Year;
PV=Double.parseDouble(myPV);
Rate=Double.parseDouble(myRate);
Year=Double.parseDouble(myYear);
FV=PV*Math.pow(1+Rate,Year);
out.println("FutureValue is:"+ FV);
%>
Use Client-Side Validating and
Sumbit Validated Form
<script type="text/javascript">
<!-function Validating(){
var Valid;
Valid=true;
if (document.fvForm.PV.value=="")
{Valid=false;}
if (Valid==false){alert("Cannot contain blank");}
else {document.fvForm.submit();}
}
-->
</script>
Note: Must use a standard button, not submit button:
<input type="button" value="ComputeFVJSP" name="btnCompute"
onclick="Validating()"/>
Depreciation Table
Straight Line Depreciation Table
<form name="depForm" method="post" action="createDepTable.jsp">
Enter Property Value: <input type="text" name="pValue" value="" /><br>
Enter Property Life: <input type="text" name="pLife" value="" /><br>
<input type="submit" value="ShowTable JSP" name="btnShowTable" />
</form>
Output
<%
String strValue, strLife;
strValue=request.getParameter("pValue");
strLife=request.getParameter("pLife");
double value, life, depreciation,totalDepreciation=0;
value=Double.parseDouble(strValue);
life=Double.parseDouble(strLife);
NumberFormat nf = NumberFormat.getCurrencyInstance();
out.println("Straight Line Depreciation Table" + "<br>");
out.println("Property Value: <input type='text' name='pValue' value='" + nf.format(value) + "' /><br>");
out.println("Property Life: <input type='text' name='pLife' value='" + life + "' /><br>");
depreciation=value/life;
totalDepreciation=depreciation;
out.println( "<table border='1' width='400' cellspacing=1>");
out.println("<thead> <tr> <th>Year</th> <th>Value at BeginYr</th>");
out.println("<th>Dep During Yr</th> <th>Total to EndOfYr</th></tr> </thead>");
out.println("<tbody>");
for (int count = 1; count <= life; count++)
{
out.write("<tr>");
out.write(" <td width='25%'>" + count + "</td>");
out.write(" <td width='25%'>" + nf.format(value) + "</td>");
out.write(" <td width='25%'>" + nf.format(depreciation) + "</td>");
out.write(" <td width='25%'>" + nf.format(totalDepreciation) + "</td>");
value -= depreciation;
totalDepreciation+=depreciation;
}
%>
Number to Currency Format
• Import class:
– <%@page import="java.text.NumberFormat"%>
• Define a format:
– NumberFormat nf = NumberFormat.getCurrencyInstance();
• Convert:
– Example: Display payment with currency format:
nf.format(payment)
Using JSP Expression
<body>
<%
String strValue, strLife;
strValue=request.getParameter("pValue");
strLife=request.getParameter("pLife");
double value, life, depreciation,totalDepreciation=0;
value=Double.parseDouble(strValue);
life=Double.parseDouble(strLife);
NumberFormat nf = NumberFormat.getCurrencyInstance();
depreciation=value/life;
totalDepreciation=depreciation;
%>
<p>Straight Line Depreciation Table</p>
<p>Property Value: <input type='text' name='pValue' value='<%=nf.format(value)%>' /></p>
<p>Property Life: <input type='text' name='pLife' value='<%=life%>'/></p>
<table border='1' width='400' cellspacing=1>
<thead>
<tr> <th>Year</th> <th>Value at BeginYr</th>
<th>Dep During Yr</th> <th>Total to EndOfYr</th>
</tr>
</thead>
<tbody>
<%
for (int count = 1; count <= life; count++)
{
%>
<tr>
<td width='25%'><%=count%></td>
<td width='25%'><%=nf.format(value)%></td>
<td width='25%'><%=nf.format(depreciation)%></td>
<td width='25%'><%=nf.format(totalDepreciation)%></td>
</tr>
<%
value -= depreciation;
totalDepreciation+=depreciation;
}
%>
</table>
</body>
Cookie
• Cookie is a small data file added by a website to
reside in user’s system.
• Define a cookie:
– new Cookie(“Key”, “value”);
– Ex. Cookie cookieCID = new Cookie ("cookieCID",CID);
• Write a cookie:
– response.addCookie(cookieCID);
Example:
<form name="custForm" action="addCookie.jsp" method="POST">
Enter CID: <input type="text" name="CID" value="" /><br><br>
Enter Cname: <input type="text" name="Cname" value="" /><br><br>
<input type="submit" value="Add Cookie" name="btnSubmit" />
</form>
<%
String CID, Cname;
CID=request.getParameter("CID");
Cname=request.getParameter("Cname");
Cookie cookieCID = new Cookie ("cookieCID",CID);
response.addCookie(cookieCID);
Cookie cookieCname = new Cookie ("cookieCname",Cname);
response.addCookie(cookieCname);
out.println("CID cookie= " + CID + "added");
out.println("Cname cookie= " + Cname + "added");
%>
Note: To view cookies with FireFox:Tools/Options/Privacy/Remove cookies
Reading Cookies
Use request.getCookies() method.
This method retrieve cookies and return them in an array.
<%
Cookie[] cookies = request.getCookies();
out.println(cookies[0].getName() + cookies[0].getValue() + "<br>");
out.println(cookies[1].getName() + cookies[1].getValue() + "<br>");
%>
Expire a cookie
• Add a expiration time:
– cookieCID setMaxAge(N);
• N is # of seconds
• N = 0, the cookie will be deleted right way
• N < 0 : the cookie will be deleted once the user exit the
browser
Cookie cookieCID = new Cookie ("cookieCID",CID);
cookieCID.setMaxAge(-1);
JSP Session Object
• Session Object denotes the data associated
with a specific session of user.
• Methods:
– session.setAttribute(“Key”, object)
• add an object to the session object associated with a key.
– session.getId()
• return the unique identifier associated with the session
– session.getAttribute(“key”)
• return the object with the specified key given in
parameter
Add an object to session object
Add Cname to session, then redirect to another page to
read the cname
<%
Cookie[] cookies = request.getCookies();
out.println(cookies[0].getName() + cookies[0].getValue() + "<br>");
out.println(cookies[1].getName() + cookies[1].getValue() + "<br>");
session.setAttribute("Cname", cookies[1].getValue());
response.sendRedirect("readSession.jsp");
%>
Retrieve an object from session
<%
Object custName;
custName=session.getAttribute("Cname");
out.println("Welcome, " + custName.toString());
%>