Web App GUI: JSP Basics & Forms 3680 Enterprise Programming

advertisement
Web App GUI: JSP Basics & Forms
3680 Enterprise Programming
Overview
Taking User Input



<form> tag
<input> tag
Processing User Input



Server-side scripting – JSP
JSP expression, scriptlet
Validating User Input


2
Client-side scripting - JavaScript
Paradigm for User Input Processing
3
HTML Form
User input is entered in an HTML <form>.
A form has three key attributes.
Name:





Required if you have multiple forms on the same page.
It is customary to name it any ways.
Action:



Specify the destination file where the form is processed. It can
be a Java servlet, a JSP page, or an ASP.NET page, etc.
If you don’t specify an action, the form will do nothing.
Method:


4
Specify how to send form to the Web server, either POST or
GET.
Input Field


Each input field (a.k.a. “control”, “field”, “control field”,
etc.) in a form is defined using the <input> tag (with
few exceptions).
For example,
<form name="main" action="processUserName.jsp"
method="post">
Your Last Name:<input type="text"
name="lastName" />
</form>
5
Input Attributes
TYPE:


Specifies the input type, e.g., text (for textboxes), checkbox, etc.
NAME:



Each control in a form must have a NAME. The data entered by
the user is retrieved by referencing the name of the field.
Without a name, the data stored in the field cannot be
retrieved.
Name is the identifier so that you can pass more than one field
and the server will know which field is which.
VALUE:



6
The value attribute you define at coding time is the initial
(default) value may be assigned to a field.
This often is replaced by the dynamic value entered by user.
Input Types
Text/Password – textbox
Checkbox – Checkbox (non-mutually exclusive choice)
Radio – Radio button (mutually exclusive choice)
Submit – “Submit” button







7
A submit button enables you to actually send the form to the
server.
Its “value” attribute only changes the text label on the button’s
face. If you don’t set it, the default text is “Submit Query”,
which may be too geeky for normal users.
Its “name” attribute really doesn’t matter.
Textbox
Use text for the type attribute.

8
Checkbox
Checkboxes can be use for non-mutually exclusive
options.

9
Radio Buttons


Use <input> element and set its type to “radio”.
Use one <input> element for each radio (selectable item).

The label you want to appear next to the radio button is the
text enclosed between <input> and </input> tags.

For all radio buttons that belong in the same group (a mutually
exclusive set of items), the “name” attribute of their
<input> element must be the same. That is, the name
identifies the entire set, not an individual radio.
Each <input> element, however, must have a unique value
for its “value” attribute.


The value of the selected radio will be passed to the
“action” page.
10
Radio Buttons
<p>Gender:
<input type="radio" name="gender"
value="M">Male</input>
<input type="radio" name="gender"
value="F">Female</input></p>
11
Submit Button


Use Submit for the type attribute (avoid button).
The value of the value attribute is the text that appears on
the face of the button.
12
Processing Input with Dynamic Pages




To actually process user input passed in a <form>, we
need to write Java code.
A dynamic Web page contains both static (template) text
and dynamic contents. Static text is written in plain
HTML.
The dynamic contents are generated by Java code written
as JSP elements.
The goal of JSP is to generate the dynamic data and insert
them into the correct spots in static HTML.
13
JavaServer Pages

The file extension must be .jsp instead of .htm/.html.



Behind the scene, the server actually converts your JSP
file containing Java code into a servlet.


You can make a pure HTML page a “JSP” file simply by changing
its file extension to .jsp.
The reverse is not true. For an HTML page containing JSP
code to function as intended, you cannot use the .htm/.html
extension.
But we don’t write Java code in JSP explicitly as classes.
JSP files contains scripts in Java syntax. Not JavaScript.

14
JavaScript is client-side scripting. JSP is server-side scripting.
Implicit Objects


In a JavaServer page, some useful, oft-used objects are
created automatically for you so that you don’t have to
worry about instantiating those objects.
Three of them are of particular interest to us:



15
The request object – contains information about the
request made by the client (browser) to the Web server.
The response object – controls output the Web server
sends to the client.
The out object – generates text that is being sent to the
client.
The request Object

We can extract useful information from the request
object.




16
Its HTTP header – Metadata about the HTTP request sent by
the web browser, such as the browser type and session ID.
The IP and DNS addresses of the client machine.
Locale information about the client machine, e.g., language,
country, etc.
Whether the client is using GET or POST to request the page.
The out Implicit Object


There is an implicit out object in every JSP page. It’s an
instance of the javax.servlet.jsp.JspWriter
class.
It has a println() and a print() method that can
be used to spit out text contents.
17
JSP Elements
Element
Opening &
Closing Tags
Description
Expression
<%=
%>
Segment of Java statement that resolves to
a String value.
Scriptlet
<%
%>
One or more complete Java statements
grouped together logically.
Declaration
<%!
%>
Equivalent to a method in a Java class.
Directives
<%@
%>
Special instructions; e.g.,The “import”
attribute of the “page” directive is
equivalent to the import statement in
Java.
18
JSP Expression

Not a complete Java statement, and not HTML code for sure.




Written in Java syntax but does not end with semicolon.
Dynamically takes on value during web app execution, based
on user input, current date/time, etc.
Ideal for filling in “placeholder” spots in HTML with real values,
e.g., an HTML <td> element for unit price may be written as
<td><%= unitPrice %></td> in design time.
In run time, it gets a real value for the “placeholders”. For
example, the above <td> element may become
<td>27.99</td> if, before the expression is run, the
variable unitPrice has taken on a value of 27.99.
19
Scriptlet


Contains complete Java statement(s). Each statement
ends with a semicolon.
Much more powerful than expressions. Can create
objects, do calculation, manipulate strings, run loops,
handle conditions, etc.


Some times you can stretch your expressions to do these, but
not without making your code Klingon (FYI, a small handful of
people on this planet speak fluent Klingon).
A typical setup is to have complex code handled by
scriptlets, often as a large chunk at the top. Then,
expressions interspersed with the HTML code refer to
variables in those scriptlets whenever necessary.
20
Writing HTML Code Programmatically

Both JSP expressions and scriptlets can be used to output
HTML code, with important differences.
Expression
Scriptlet
Typically used to write the dynamic
portions only. Expressions are
intermixed with HTML code, the
latter used to generate static
contents.
Must use the println() or print()
method to generate HTML code. Both
dynamic contents and HTML tags and text
become the argument of the
println()/print() method.
It generates text only. Usually only
Outputting text is only one capability of a
used to show the value of a variable, scriptlet.
an expression, or a method call that
can be evaluated to a String.
21
Processing User Input



To create dynamic pages, an important task is to extract
the values entered by the users.
When the form is submitted, each piece of user input
(the values entered into the <input> tags) are passed
as a parameter.
A parameter is in the form of a name-value pair.


22
The name is the name attribute you defined for the <input>
tag.
The value is the information furnished by the user, e.g., text
entered into a textbox.
Processing User Input

For example, a text input field is called “firstName”
and a particular user enters “Andy” on the page.



If multiple parameters are passed, they are connected
with ampersands.



The name-value pair is firstName=Andy.
The parameter is the “firstName” parameter.
The collection of parameters is called a query string,
preceded with a question mark. e.g.,
?firstName=Andy&lastName=Wu
Parameters are stored in the request object and
passed to the next page.
Parameter names are case-sensitive.
23
getParameter() Method

To retrieve the value stored in this parameter, call the
getParameter() method of the request object.


Pass the parameter name as the argument.
getParameter("firstName") will return the value
“Andy”.

24
This is the same regardless of which method (get or post) is
used to submit the form.
Data Type of Parameter Values



If a parameter does have content, i.e., not being passed as
null, the getParameter() method returns a String.
Even numeric data entered by users are passed as Strings.
Call the parseX() methods in wrapper classes to
convert the textual information into numeric, e.g.,
int orderQty = Integer.parseInt(
request.getParameter("qty") );

It often helps to run an if statement to check whether a
parameter is null before calling the
getParameter() method.
25
Get vs. Post



After a form is submitted, the browser moves away from
the current page to the page specified in the action
attribute of the form.
In the address bar, the browser displays the file name of
the page where processing of the form takes place.
It may or may not append extra information to the end of
that URL, depending on whether the form action is a Get
or a Post.
26
Get vs. Post


If it’s a get, the query string is appended (a question mark,
followed by name-value pairs in the format of
fieldName=fieldValue, separated by ampersands).
If it’s a post, nothing will be appended to the URL.
27
Validating User Input



At times we want to validate user input to make sure
the information is entered in the correct format, the
value falls within logically valid range, required information
is provided, etc.
In some situations validation may be done on the server
side again, but most likely we want to perform validation
on the client (browser) so that we don’t add unnecessary
burden to the server.
Client-side user validation usually is done with JavaScript.
28
Client- vs. Server-Side Scripting







An HTML form consists of one or more input fields into
which the user enters the necessary information.
You use an HTML form to collect information from the user.
Client-side Scripting:You often want to validate the input
using JavaScript.
You pass the information to the sever.
Server-side Scripting: The server processes user input,
creates dynamic contents based on the input, and writes the
HTML code.
The server passes the generated code back to the client.
The client’s browser displays the HTML code from the server.
29
JavaScript




Preferred choice for client-side validation.
Not a “watered-down” version of Java.They were actually
created by different companies. But the syntax is very
similar.
Much more relaxed (or lax) in terms of variable
declaration, data type, argument passing, etc.
But still is case-sensitive.
30
Placement of Scripts



You can insert JavaScript code into multiple locations in
the page, using more than one <script> tags.
If part of our HTML code or a <script> tag depends
on the result from executing another <script> tag,
that other <script> tag must be placed ahead of the
current code.
The <script> tag content in the <head> section gets
loaded before the remaining parts of the page.
31
Client-side Scripting Using JavaScript
<script language="JavaScript">
document.write("Hello World!")
</script>
Closing tag
32
Opening
script tag
Inserting Comments into Client-side Scripts
<script language="JavaScript">
<!-- Hide script from old browser
/* This script adds the words
"Hello World!" into the body area
of the HTML page
*/
document.write("Hello World!")
//End hiding script from old
browser-->
</script>
33
Make your code
more readable
Referencing An Object in JavaScript

JavaScript defines a hierarchy for objects on a page, e.g.,


34
The “firstName” text box in a form called “main” is referred to as:
documents.forms.main.firstName
The value user types into the text box is referred to as:
documents.forms.main.firstName.value
JavaScript Functions



A function is a set of JavaScript instructions or operations
that perform a task.
Every function has a unique name, and can be invoked, or
called, by other parts of the script.
The benefits of using functions are about the same as
those of using methods in Java:



35
Use a single command to trigger a complex series of actions.
Prevent from repeating the code a number of times within the
script.
Develop generic functions that you can reuse in any script.
JavaScript Functions Syntax

Defining a function
function functionName(arguments)
{
…
}

To call a function
functionName(arguments)
36
Events and Scripts

An event is a user action that triggers activities on the
page.



For example, loading a Web page when it is requested, clicking
a button on a Web page, moving a mouse over an image, and
typing into a text input field on a form, are all events
You can write script to respond to specific actions or
events.
You can attach a script to some visible element so that
the script is executed when the user performs an action
on that element (for example, clicking it).
37
Events and Scripts

To respond to an event in a Web page, you need:



38
An event - User action that triggers an event handler (e.g.,
mouse click).
An event handler - Script that respond to the action, typically a
JavaScript function.
An association of the two by adding an attribute in the format
of event_name = function_call_statement to the
tag.
Event Handlers
39
Download