Top Banner
DT211/3 Internet Application Development Introduction to Java Server Pages (JSP)
52

DT211/3 Internet Application Development

Dec 30, 2015

Download

Documents

zeph-singleton

DT211/3 Internet Application Development. Introduction to Java Server Pages (JSP). Introduction. First – need to know the various “java” related terms: J2EE, J2SE, JDK, JRE, JSP,JSTL, Java Servlets,Tomcat, Apache etc…. Introduction – J2EE. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DT211/3 Internet Application Development

DT211/3 Internet Application Development

Introduction to Java Server Pages (JSP)

Page 2: DT211/3 Internet Application Development

Introduction

• First – need to know the various “java” related terms:

J2EE, J2SE, JDK, JRE, JSP,JSTL, Java Servlets,Tomcat, Apache etc…..

Page 3: DT211/3 Internet Application Development

Introduction – J2EE

• Sun Microsystems supply the Java 2 Enterprise Edition(J2EE) platform, enabling developers to develop java based enterprise applications

• J2EE is a standard set of technologies and APIs• (note: J2SE is the standard edition of the java platform but is

not geared at large enterprise environments with distributed systems)

• J2EE includes the following components:

JavaServerPages

Servlets Javabeans

JDBC JNDIJavaMessaging

Page 4: DT211/3 Internet Application Development

Introduction – J2EE

• Since J2EE is a specification, vendors create productsthat support the J2EE specifcation e.g. Apache, IBMWebSphere, BEA Weblogic.

• From a web perspective, the J2EE applications that areparticularly relevant are:

Java Server Pages

Java servlets

Java Beans

Can be used on its ownor with beans/servlets to create a webapplication

Can be used on its ownor with JSP/beans to create a webapplication

More complex web applications may use all 3

Page 5: DT211/3 Internet Application Development

Introduction – JDK

• The (JDK) Java Development Kit is the collective name for the various development components supplied in the J2EE (or J2SE).

• The Java Runtime Environment (JRE) is consists of the components required to run a java application

Page 6: DT211/3 Internet Application Development

Introduction to JSP• Java Server Pages – A technology for developing web

pages that include dynamic content

• Created by SUN microsystems

• ‘Equivalent’ of Microsoft’s Active Server Pages technology

• Pages have a file extension of .JSP

• JSPs enable web developers to enhance HTML code by adding special JSP elements that are processed by the server

• Will use JSP v2.0

Page 7: DT211/3 Internet Application Development

Advantages of JSP

•JSP pages are pre-compiled Fast

•Part of the Sun’s J2EE - Can be used with other types of java technologies, such as servlets - flexible

•JSP is a specification multiple vendors support it commercially stable/not ‘fly by night’ technology

•Easy to develop: HTML can be easily maintained with JSP. Relatively minimal programming skills required.

•JSP page code is not visible on client – only generated HTML is visible

Page 8: DT211/3 Internet Application Development

Running JSP pages

To develop and run JSP pages, need: - Java Developer Kit (JDK which is part of J2EE) or higher AND a Web server that contains a JSP Container

-JSP Containers are not automatically included with all Web servers

-Examples of web servers that contain a JSP container are Apache Tomcat and Blazix.

Not automatically included with all web servers

Page 9: DT211/3 Internet Application Development

JSP Container

-The JSP Container intercepts all client request for JSP pages

-First time a JSP page is requested, the Container converts the page into a java program called a Servlet and compiles -- Translation phase

-For all follow-on request, the Container processes each request by invoking the appropriate servlet and then generating the response - Request processing phase

Q: What happens if the JSP page is changed?

JSP Containers

Page 10: DT211/3 Internet Application Development

How a JSP page is processed by server

First time through, JSP is translated to a servlet

After, container goes directly to the servlet in the request processing phase

If JSP page is changed, servlet is re-compiled

Page 11: DT211/3 Internet Application Development

JSP and Apache

•Apache project have a sub project called Jakarta(see http://jakarta.apache.org/index2.html)

•Jakarta project produces

- Tomcat web server (nicknamed Catalina)- Tomcat webserver incorporates JSP container (nicknamed Jasper)

Page 12: DT211/3 Internet Application Development

Software Versions

JSP technology developing rapidly

New version contain major new capabilities

Always note the JSP container version you are working with, and check functionality supported (on apache website)

This course using

Apache Tomcat Version 5

JSP 2

JSLT 1.1

Servlet 2.4

Page 13: DT211/3 Internet Application Development

To run a JSP

Using apache Tomcat…

Create your web application directory

Create the subset WEB-INF directory (won’t run without this)

Put JSP page into web application directory

Call from the browser

http://localhost:8080/webapp/somename.jsp

Page 14: DT211/3 Internet Application Development

To run a JSP

In the background –

Tomcat will retrieve the JSP page from the web server

If it’s the first time JSP page has been called/run or if page has changed, Tomcat will compile the JSP page (into a servlet) - .java and .class placed in /work directory.

- subsequent calls to page will be faster as no compile needed

JSP page will be presented back to the user

Page 15: DT211/3 Internet Application Development

Simplest JSP.. Helloworld

• Prints out message to user when JSP is loaded..

• Tomcat demo..

Page 16: DT211/3 Internet Application Development

Another Simple JSP example

<html> <%@ page import="java.util.Date" %><head> <title>JSP DATE EXAMPLE</title></head><body bgcolor=#ffffff>

<h1>JSP DATE</h1> <h2> The current date is <%= new Date() %>. </h2> </body></html>

Prints out the current date

Page 17: DT211/3 Internet Application Development

Readability of JSP pages

Always always always ensure that code is:

INDENTED COMMENTED CONTAINS AN ID BLOCK

1) Indented - to reflect level of the code

<html> <head>ajsdlkfjads

etc 2) Well commented. Comments in JSP appear as

<%-- calculate the sum of x and z here --%>

Comments in HTML appear as <!--- this is a comment -->

HTML comments will be visible by view source in browser, JSP comments won’t.

Page 18: DT211/3 Internet Application Development

3) Titled with an ID block:

At the top of each JSP page, should have an ID block explaining who write the script, date, script name, description and any revisions. Can use either JSP or HTML comments (depending on whether users should be able to see the ID block)

<%-- ********************************************* *** Script name: addition.jsp *** *** Author: Keith Morneau *** *** Date: July 7th 2006 *** *** Desciption: whatever it does.. *** *** Revisions: *** *** August 8th 2006: added subroutine *** ************************************************--%> etc

Readability of JSP pages

Page 19: DT211/3 Internet Application Development

JSP techniques

Directive elements

Action elements and Java Standard Tags Library

Scripting elements (java)

JSP provides variety of techniques to enable dynamic processing:

Java Beans

In this topic

Page 20: DT211/3 Internet Application Development

JSP Pages: Directive Elements

• Directive Elements - Used to provide information about the general set-up of the page. e.g. inclusion of header files, name of page to report errors, whether session tracking is required etc

• Always enclosed between <%@ …… %>

• Syntax: <%@ directivename attribute = “value”, attribute = “value” …. %>

Page 21: DT211/3 Internet Application Development

JSP Pages: Directive Elements

• There are Three directives available to use:

– <%@ page ….. >

– <%@ include …… %>

– <%@ taglib ….. %>

Page 22: DT211/3 Internet Application Development

Directive Elements

•Each directive has a set of associated attributes (similar to some tags in HTML)

•Usually placed at top of JSP file but doesn’t have to be

Example: <%@ page import="java.util.*, java.lang.*" %>

Full list of attributes available at: http://java.sun.com/products/jsp/syntax/1.1/syntaxref11.html

Page 23: DT211/3 Internet Application Development

Directive Elements: Page

Page directive - defines attributes that apply to an entire JSP page.

Examples

<%@ page contentType = “text/html” %><%@ page language = “java” %><%@ page errorPage="error.jsp" %>

Page 24: DT211/3 Internet Application Development

List of attributes includes

<%@ page [ language="java" ][ import="{package.class | package.*}, ..." ][ session="true|false" ][ isThreadSafe="true|false" ] *multiple threads allowed or not [ info="text" ] *gives info about the page to administration

[ errorPage="relativeURL" ][ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ][ isErrorPage="true|false" ] *Specifies whether exception object available or not

%>

Directive Elements: Page

Page 25: DT211/3 Internet Application Development

Directive Elements: Include

Include directive - Includes a static file in a JSP file attranslation time

Syntax<%@ include file="relativeURL" %>

The included file can be an HTML file, a JSP file, a text file, or a code file written in the Java programming language

Useful for including repetitive HTML content across a web site – headers, navigation bars, footers etc

Useful for common logic – e.g. date displays

Page 26: DT211/3 Internet Application Development

<html><head><title>An Include Test</title></head><body bgcolor="white"><font color="blue">The current date and time is<%@ include file="date.jsp" %></font></body></html>

Directive Elements: Include

Example: jsp page name = includexample.jsp

Page 27: DT211/3 Internet Application Development

<%@ page import="java.util.*" %><%= (new java.util.Date() ).toLocaleString() %>

Directive Elements: Include

Example (continued) jsp page name = date.jsp

When includexample.jsp is run, displays as

The current date and time areAug 30, 2006 2:38:40

Includedinto includexample.jspfrom previous page

Page 28: DT211/3 Internet Application Development

Directive Elements: Taglib

Taglib directive - Defines a tag library and prefix for the custom tags used in the JSP page.

Syntax

<%@ taglib uri="URIToTagLibrary“ prefix="tagPrefix" %>

Example: <%@ taglib uri=“http://java.sun.com/jstl/core“ prefix=“c" %>

More on taglib directives later when we use Java Standard Tag Library (JSTL)

Page 29: DT211/3 Internet Application Development

Directive Elements: summary

Three directives: page, include, taglib

Used to define general set-up information about the JSP page

By themselves, don’t “do” anything

At least one used in most JSP pages

Page 30: DT211/3 Internet Application Development

Directive elements

Action elements and JSTL

Scripting elements

Java Beans

JSP dynamic processing

Done

Page 31: DT211/3 Internet Application Development

Scripting elements

Developers in JSP can insert java code directly into a JSP pages using scripting elements

The code is executed when the page is requested

Should be used with extreme care:

• Too much code difficult to maintain

• Difficult for HTML programmers

• More suitable for simple applications with small development team

Q: How do you specify that the language being used in page by scripting elements is java?

A: Page directive language attribute

Page 32: DT211/3 Internet Application Development

Scripting elements

Three types of scripting elements:

1.Expressions: The expression syntax <%= ... %> defines a scripting language expression .. “result”

2.Scriptlets: The scriptlet syntax <% ... %> can handle declarations, expressions, or any other type of code fragment valid in the page scripting language. When you write a scriptlet, end the scriptlet with %> before you switch to HTML, text, or another JSP tag

3. Declarations: The declaration syntax <%! ... %> declares variables or methods.

Page 33: DT211/3 Internet Application Development

Scripting elements: Expressions

Expressions:

• Contains any valid java expression in the JSP page

• Used to output dynamic values directly onto web page (e.g. result of a calculation, dates)

• Enclosed between <% and %>

• output as a string

Syntax <%= expression %> e.g. <% = 1+1%>

Page 34: DT211/3 Internet Application Development

Expressions - examples

• E.gs: any valid java expression

<%= Math.sqrt(2) %><%= items[i] %><%= a + b + c %><%= new java.util.Date() %>

Page 35: DT211/3 Internet Application Development

Scripting elements: Expressions

Example

<html>

<body>

Current time is: <%= new java.util.Date() %>

</body>

</html>

Page 36: DT211/3 Internet Application Development

Scripting elements: Expressions

Note:

• Evaluated at run time. Result is added to the response body and output directly to web page

• Can use an expression within a line of text, whether or not it is tagged with HTML

• Must be a valid java expression

• No “;” required at end of expression (unlike scriptlets)

Page 37: DT211/3 Internet Application Development

Three types of scripting elements:

1. Expressions

2.Scriptlets

3. Declarations

Scripting elements

Page 38: DT211/3 Internet Application Development

Scripting elements: Scriptlets

Scriplets are java code fragments with a JSP page

• Enables more complex functionality than expressions

• Java code is placed between <% and %> characters (just like expressions, but without the = sign at the start of the sequence.)

• Can have any number of valid java code statements

• Scriptlet contains Java code that is executed every time the JSP is invoked

• Syntax: <% code %>

Page 39: DT211/3 Internet Application Development

Scripting elements: Scriptlets

Example – jsp page that outputs numbers 1 to 10 onto a web pagehtml>

<head> <title>Count to 10 in JSP scriptlet</title> </head> <body><% for(int i=1;i<=10;i++){%><%=i%><br/><%}%> </body></html>

Expression used to output to page. Can’t put HTML Tags into the scriptlet. Can onlycontain valid java code

Scriptlets

Page 40: DT211/3 Internet Application Development

Scripting elements: Scriptlets

Example – jsp page that outputs numbers 1 to 10 onto a web page – Output in browser will be:..

Count to 10 in JSP

12345678910

Page 41: DT211/3 Internet Application Development

Scriplets: mixing scriplets with HTML and other tags

• When you mingle scripting elements with HTML and JSP tags, you must always end a scripting element before you start using tags and then reopen the scripting element afterwards, like this:

<% } else { %> <!-- closing the scriptlet before the tags start -->

... tags follow ...

<% } %> <!-- reopening the scriptlet to close the language block -->

At first, this may look a bit strange, but it ensures that the scripting elements are transformed correctly when the JSP source file is compiled

Page 42: DT211/3 Internet Application Development

Scripting elements: Scriptlets

Example 2 –jsp page that outputs “Hello! The time is now Wed Sep 03 13:17:58 BST 2006

Your machine's address is 127.0.0.1” onto a web page <HTML>

<BODY>

<%

java.util.Date date = new java.util.Date();

%>

Hello! The time is now

<%

out.println( date );

out.println( "<BR>Your machine's address is " );

out.println( request.getRemoteHost());

%>

</BODY>

</HTML>

Note: could have put this line outside the scriptletas HTML

Page 43: DT211/3 Internet Application Development

Note:

Any text, HTML tags, or JSP elements you write must be outside the scriptlet

Readability: Mixture of Tags and Java code can be difficultto read – especially for HTML developers

Scripting elements: Scriptlets

Page 44: DT211/3 Internet Application Development

<% if (Math.random() < 0.5) { %>

Have a <B>nice</B> day!

<% } else { %>

Have a <B>lousy</B> day!

<% } %>

Scripting elements: Scriptlets

In background, JSP container compiles the JSP page into Java code.. converting the HTML snippets into java code to out.print statements

---

Page 45: DT211/3 Internet Application Development

Scripting elements: Scriptlets

if (Math.random() < 0.5)

{

out.println("Have a <B>nice</B> day!");

}

else

{

out.println("Have a <B>lousy</B> day!");

}

JSP code on previous page will be converted in background to the following java code..

Page 46: DT211/3 Internet Application Development

<TABLE BORDER=2><% for ( int i = 0; i < n; i++ ) { %> <TR> <TD>Number</TD> <TD><%= i+1 %></TD> </TR> <% }%></TABLE>

Example 3 – fragment of JSP page that generates a table in HTML containing numbers 1 to n

Note: would need to supply int variable n before it will work…

HTML within “for” loop is output n times

Scripting elements: Scriptlets

Page 47: DT211/3 Internet Application Development

Three types of scripting elements:

1. Expressions

2. Scriptlets

3.Declarations

Scripting elements

Page 48: DT211/3 Internet Application Development

Scripting elements: Declarations

Declaration: Declares a variable or method that can be used throughout the JSP page

Examples

<%! int i = 0; %><%! int a, b, c; %><%! Circle a = new Circle(2.0); %>

Syntax

<%! declarations; %> Note the “ ;”

Page 49: DT211/3 Internet Application Development

Scripting elements: Declarations

Declarations don’t generate any output onto the page by themselves- usually used with expressions and/or scriptlets

Examples

<%! private int accessCount; %>

Accesses to page since server reboot: <%= ++accessCount %>

Prints the number of times the current page has been requested since the server was booted

Page 50: DT211/3 Internet Application Development

Example – Declares method getDate()<%@ page import="java.util.*" %>

<HTML>

<BODY>

<%!

Date theDate = new Date();

Date getDate()

{

System.out.println( "In getDate() method" );

return theDate;

}

%>

Hello! The time is now <%= getDate() %>

</BODY>

</HTML>

Scripting elements: Declarations

MethodgetDate()returns a Dateobject

Page 51: DT211/3 Internet Application Development

Declaration

• Declarations (between <%! and %> tags) contain one or more variable or method declarations that end or are separated by semicolons:

• <%! int i = 0; %><%! int a, b; double c; %><%! Circle a = new Circle(2.0); %>

You must declare a variable or method in a JSP page before you use it in the page. The scope of a declaration is usually a JSP file, but if the JSP file includes other files with the include directive, the scope expands to cover the included files as well.

Page 52: DT211/3 Internet Application Development

Declarations

• Warnings!

• Declaring variables in a JSP page using declarations can cause synchronisation problems.. Compiled servlets see these as variables which may be shared across all users using the JSP page.

• On previous date example, Date stays the same when the page is reloaded.. Because only a single instance of the page (and there of the variable theDate is available). Better to use local variables within declared methods or scriptlets