450 likes | 463 Vues
Learn about Java Server Pages (JSP), a technology that mixes static HTML with dynamically-generated HTML, and how to use it for server-side scripting in Java. This tutorial includes examples, syntax, and step-by-step instructions.
E N D
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/bnagx.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, multi-tiered, scalable, reliable, and secure network applications. • Java ME (Mobile Edition) provides an API and a small-footprint 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.
Example of Java Classes import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
Hyper Text Transfer Protocol: Request & Response HTTP Request Browser Web Server HTTP Response Web Application
FORM • Form attribute: • 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 • Get: the form’s data is appended to the URL specified by the Action attribute as a QueryString. • Post: A preferred method for database processing. Form’s data is sent in the HTTP body. Post is the preferred method. Example: <form name="testForm" method="post" action="computeSum.jsp“> • Button: • Type = “submit” <input type="submit" value="ComputeSumJSP" name="btnCompute"/>
QueryString • A QueryString is a set of name=value pairs appended to a target URL. • It can be used to pass information from one webpage to another. • To create a QueryString: • Add a question mark (?) immediately after a URL. • Followed by name=value pairs separated by ampersands (&). • Example: • <A Href=“http://my.com/Target.htm?CustID=C1&Cname=Chao”>
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 dynamically-generated 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 • 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
JSP scriptlet <% %> Example: <body> <h1>Hello World!</h1> <% out.print("Welcome!!!"); out.print("To JSP Training"); out.print("Welcome!!!"); out.print("To JSP Training"); %> </body> Question: How to start a new line?
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";.
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.print("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.print(" <p>Value1: <input type=‘text' name='num1' size='20' value='" + value1 + "'></p>"); out.print(" <p>Value2: <input type='text' name='num2' size='20' value='" + value2 + "'></p>"); out.print("The sum is: <input type='text' name='sum' size='20' value='" + sum + "'>" ); %> </body>
Embed JSP code in HTMLUsing 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>
Example of get Method and getQueryString() <% String value1, value2; double n1, n2, sum; String queryString=request.getQueryString(); value1=request.getParameter("num1"); value2=request.getParameter("num2"); n1= Double.parseDouble(value1); n2= Double.parseDouble(value2); sum=n1+n2; out.print("The sum is:" + sum); out.print("<br> The queryString is: " + queryString); %>
Import Java ClassExample: 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>
Code Example <%@page import="java.util.Date"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <% Date currentDate = new Date(); %> <p>The time is: <input type="text" name="num2" size="20" value="<%=currentDate%>"></p> </body> </html>
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 > 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()"/>
JSP to Read CheckBox: !=null <form action="checkBox.jsp"> <input TYPE=checkbox name=resident VALUE=resident> Resident? <br> <INPUT TYPE=submit name=submit Value="Submit"> </form> <% String resident,residentValue; resident = request.getParameter("resident"); if (resident !=null) out.print("You are a resident!"); else out.print("You are not a resident!"); %>
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>
<% 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 >" + count + "</td>"); out.write(" <td >" + nf.format(value) + "</td>"); out.write(" <td>" + nf.format(depreciation) + "</td>"); out.write(" <td>" + nf.format(totalDepreciation) + "</td>"); value -= depreciation; totalDepreciation+=depreciation; } %>
Number to Currency Format • Import class: • <%@page import="java.text.NumberFormat"%> • Define a format: • NumberFormatnf = 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><%=count%></td> <td><%=nf.format(value)%></td> <td><%=nf.format(depreciation)%></td> <td><%=nf.format(totalDepreciation)%></td> </tr> <% value -= depreciation; totalDepreciation+=depreciation; } %> </table> </body>
Display Percentage Format:Import class:<%@page import="java.text.NumberFormat"%> double rate = 0.05267; NumberFormat pFormat = NumberFormat.getPercentInstance(); pFormat.setMinimumFractionDigits(2); out.println("Percent format: " + pFormat.format(rate));
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);
Java Array • Examples of declaring an array: • int[] anArray = new int[10]; • 10 elements index from 0 to 9 • double[] anArrayOfDoubles = new double[10]; • String[] anArrayOfStrings = new String[10]; • int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
Creating a listbox of rates double[] rates= {0.03,0.04,0.05,0.06,0.07}; String[] displays={"3%","4%","5%","6%","7%"}; out.println( "Select interest rate: <select name='Rate'>"); for (int i = 0; i <= rates.length-1; i++) { out.println("<option value='" + rates[i] + "'>" + displays[i] + "</option>"); } out.println( "</select><br><br>");
Compute Future Value:Process form with controls Created Using JSP Code: Note this page is a jsp page
JSP code to create the form <form name="fvForm" method="post" action="computeFV.jsp"> Enter present value: <input type="text" name="PV" value="" /><br><br> <% double[] rates= {0.03,0.04,0.05,0.06,0.07}; String[] displays={"3%","4%","5%","6%","7%"}; out.println( "Select interest rate: <select name='Rate'>"); for (int i = 0; i <= rates.length-1; i++) { out.println("<option value='" + rates[i] + "'>" + displays[i] + "</option>"); } out.println( "</select><br><br>"); double[] yearValues= {10,15,30}; String[] yearLabels={"10-year","15-year","30-year"}; out.println( "Select year:<br><br>"); for (int i = 0; i <= yearValues.length-1; i++) { out.println("<input type='radio' name='Year' value='" + yearValues[i] + "'/>" + yearLabels[i] + "<br><br>"); } %> <input type="submit" value="ComputeFVJSP" name="btnCompute" /> </form>
JSP Code to process the form <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); %>
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);