Introduction to JSP

Preview:

Citation preview

JAVA SERVER PAGES (JSP)

What is JSP ? Popular server side scripting language. Provides dynamic web contents. Make use of script lets and XML based tags.

JSP Execution Steps

JSP Page

.java file (Servlet Code)

.class file servlet

Preprocessed

compiled

Advantages of JSP Ease of deployment. Support multithreading. Re-usable components. Support cross platform.

JSP Page format

Components of JSP HTML Java scriptlets JSP directives JavaScript

JSP Element Types Scripting- Insert java statements directly into the

program. Directive- give direction to the JSP translator

Two types are available, Include, Page, Taglib Actions – Used to convert JSP elements to java

servlet codes. Tag Libraries provide additional action elements.

Scriptlets in JSP Java statements are enclosed in special tags

<% ……. %>

<% =……. %>

<% !……. %>Eg: <% java.util.Date ct=new java,util.Date() %>

<%=%>

JSP Directives A set of attributes which are applicable for the entire

jsp page. <%@ directive attr_name=value %> 3 types of directives are defined over jsp

Page Directive

Include Directive

Tablib Directive

Sample JSP Program<html> <body> <P> The following is a JSP declaration<P>

<%! int x = 5;

private int aMethod(int y) {

return x * y;

}

%>

<P> The following is a JSP expression, notice the lack of semi-colon<P>

<P> This is a basic jsp<P>

<%= new java.util.Date() %>

<P> The following is a JSP scriptlet<P>

<UL>

<% for (int i = 0; i < 3; i++) {

%>

<LI><%= aMethod(i) %>

<% } %>

</UL></body></html>

Page Directive Attribute

Defines page-dependent attributes, such as scripting language, error page, and buffering requirements

Syntax

<%@ page attribute="value"%>

or

<jsp:directive.page attribute="value" />// XML Markup

Attributes of Page Directive<%@ page

[ language=”Scripting Language” ]

[ extends=”ClassName” ]

[ import=”{package.class | package.*}, ...” ]

[ session=”true|false” ]

[ buffer=”none|8kb|sizekb” ]

[ autoFlush=”true|false” ]

[ isThreadSafe=”true|false” ]

[ info=”text” ]

[ errorPage=”relativeURL” ]

[ contentType=”mimeType [ ;charset=characterSet ]” |

“text/html ; charset=ISO-8859-1” ]

[ isErrorPage=”true|false” ]

%>

Example Page Directive AttributeAttribute Description

buffer Specifies a buffering model for the output stream.

autoFlush Controls the behavior of the servlet output buffer.

contentType Defines the character encoding scheme.

errorPage Defines the URL of another JSP that reports on runtime exceptions.

isErrorPage if this JSP page is a URL specified by another JSP page's errorPage attribute.

extends Specifies a superclass that the generated servlet must extend

import Specifies a list of packages or classes

info Defines a string that can be accessed with the servlet's getServletInfo()

isThreadSafe Defines the threading model for the generated servlet.

language Defines the programming language used in the JSP page.

session Specifies whether or not the JSP page participates in HTTP sessions

isELIgnored Specifies whether or not EL expression within the page will be ignored.

isScriptingEnabled

Determines if scripting elements are allowed for use.

Import Directive Attribute

Includes a file during the translation phase Syntax<%@ import file="relative url" %>

or

<jsp:directive.include file="relative url" /> // XML Markup

Taglib Directive Attribute

Declares a tag library, containing custom actions, used in the page

User defined tags to implement custom behaviour. Syntax<%@ taglib uri="uri" prefix="prefixOfTag" >

or

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" /> // XML Markup

Types of Tablib Directives

Core Tags Formatting tags SQL tags XML tags JSTL Functions

Core Tags in JSP

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

Tag Description

<c:out > Like <%= ... >, but for expressions.

<c:set > Sets the result of an expression evaluation in a 'scope'

<c:remove > Removes a scoped variable (from a particular scope, if specified).

<c:catch> Catches any Throwable that occurs in its body and optionally exposes it.

<c:if> Simple conditional tag which evalutes its body if the supplied condition is true.

<c:choose> Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by <when> and <otherwise>

<c:when> Subtag of <choose> that includes its body if its condition evalutes to 'true'.

<c:otherwise > Subtag of <choose> that follows <when> tags and runs only if all of the prior conditions evaluated to 'false'.

<c:import> Retrieves an absolute or relative URL and exposes its contents to either the page, a String in 'var', or a Reader in 'varReader'.

<c:forEach > The basic iteration tag, accepting many different collection types and supporting subsetting and other functionality .

<c:forTokens> Iterates over tokens, separated by the supplied delimeters.

<c:param> Adds a parameter to a containing 'import' tag's URL.

<c:redirect > Redirects to a new URL.

Formatting Tags The JSTL formatting tags are used to format and

display text, the date, the time, and numbers for internationalized Web sites.

Syntax

<%@ taglib prefix="fmt“ uri= "http ://java. Sun .com / jsp/jstl/fmt" %>

Tag Description

<fmt:formatNumber> To render numerical value with specific precision or format.

<fmt:parseNumber> Parses the string representation of a number, currency, or percentage.

<fmt:formatDate> Formats a date and/or time using the supplied styles and pattern

<fmt:parseDate> Parses the string representation of a date and/or time

<fmt:bundle> Loads a resource bundle to be used by its tag body.

<fmt:setLocale> Stores the given locale in the locale configuration variable.

<fmt:setBundle> Loads a resource bundle and stores it in the named scoped variable or the bundle configuration variable.

<fmt:timeZone> Specifies the time zone for any time formatting or parsing actions nested in its body.

<fmt:setTimeZone> Stores the given time zone in the time zone configuration variable

<fmt:message> To display an internationalized message.

SQL Tags The JSTL SQL tag library provides tags for

interacting with relational databases (RDBMSs) such as Oracle, mySQL, or Microsoft SQL Server.

Syntax

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

Standard Action Elements

Element Description

<jsp:useBean> Makes a JavaBeans component available in a page.

<jsp:getProperty> Gets a property value from a JavaBeans component and adds it to the response.

<jsp:s etProperty> Sets a JavaBeans property value.

<jsp:include> Includes the response from a servlet or JSP page during the request processing phase.

<jsp:forward> Forwards the processing of a request to a servlet or JSP page.

<jsp:param> Adds a parameter value to a request handed off to another servlet or JSP page using <jsp:include>or <jsp:forward>

<jsp:plugin> Generates HTML that contains the appropriate client browser-dependent elements (OBJECT or EMBED) needed to execute an Applet with the Java Plugin software.

Tag Description

<sql:setDataSource> Creates a simple DataSource suitable only for prototyping

<sql:query> Executes the SQL query defined in its body or through the sql attribute.

<sql:update> Executes the SQL update defined in its body or through the sql attribute.

<sql:param> Sets a parameter in an SQL statement to the specified value.

<sql:dateParam> Sets a parameter in an SQL statement to the specified java.util.Date value.

<sql:transaction > Provides nested database action elements with a shared Connection, set up to execute all statements as one transaction.

Implicit Objects in JSP Are object which can use in JSP pages without

declaring them explicitly.

Object Description

request This is the HttpServletRequest object associated with the request.

response This is the HttpServletResponse object associated with the response.

out This is the PrintWriter object used to send output to the client.

session This is the HttpSession object associated with the request.

application This is the ServletContext object associated with application context.

config This is the ServletConfig object associated with the page.

pageContext This encapsulates use of server-specific features like higher performance JspWriters.

page This is simply a synonym for this, and is used to call the methods defined by the translated servlet class.

Exception The Exception object allows the exception data to be accessed by designated JSP.

REQUEST: Subclass - javax.servlet.ServletRequest

Methods are getParameter() getParameterValues() getParameterNames()

RESPONSE: Subclass - javax.servlet.ServletResponse

Implicit Object : request and response

Subclass - javax.servlet.ServletResponse

Methods are: findAttribute getAttribute getAttributesScope getAttributesNamesInScope

Implicit Object : pageContext

Subclass - javax.servlet.http.HttpSession

Methods are: getId getValue getValueNames putValue

Implicit Object : session

Subclass - javax.servlet.ServletContext

Scope of the object is within the application.

Methods are: getMimeType getRealPath

Implicit Object : application

Subclass - javax.servlet.jsp. JspWriter Clear clearBuffer Flush getBufferSize getRemaining

Implicit Object : out

Subclass - javax.servlet.ServletConfigMethods are:

getInitParameter getInitParameterNames

Implicit Object : config

Subclass - java.lang.Object Methods are:

Authors does not use this object.

Subclass - java.lang.ThrowableMethods are:

getMessage getLocalizedMessage printStackTrace

Implicit Object : page and Exception

Error Handling<@page isErrorPage=”true” %>

<HTML>

<HEAD>

<TITLE>Error</TITLE>

</HEAD>

</BODY>

The following error has occurred: <%= exception.toString() %>

</BODY>

</HTML>

Or

<%page errorPage=”/jspError.jsp” %>

Using variables in a page using JSP

<%@ page language="java" contentType="text/html" %>

<%! int globalCounter = 0; %>

<html>

<head>

<title>A page with a counter</title>

</head>

<body bgcolor="white">

This page has been visited: <%= ++globalCounter %> times.

<p>

<% int localCounter = 0;%>

This counter never increases its value: <%= ++localCounter %>

</body>

</html>

Conditional Processing in JSP

Can do by the following methods, JavaBean properties Request Information Looping over arrays

Example using JavaBean property

<%@ page language="java" contentType="text/html" %>

<html>

<body bgcolor="white">

<jsp:useBean id="clock" class="java.util.Date" />

<% if (clock.getHours( ) < 12) { %>Good morning!<% }

else if (clock.getHours( ) < 17) { %>Good day!<% }

else { %>Good evening!<% } %>

</body>

</html>

Example using Request Information

<%@ page language="java" contentType="text/html" %>

<html>

<body bgcolor="white">

<% if (request.getParameter(“id”)!=1) { %>Not a valid member!

<% }

else if (request.getParameter(“id”)=2) { %>Welcome !<% } else { %>Welcome Guest!<% } %>

</body>

</html>

Example using Looping Over Arrays<%@ page language="java" contentType="text/html" %><html>

<body bgcolor="white">

<form action="loop.jsp">

<input type="checkbox" name="fruits" value="Apple">Apple<br>

<input type="checkbox" name="fruits" value="Banana">Banana<br>

<input type="checkbox" name="fruits" value="Orange">Orange<br>

<input type="submit" value="Enter">

</form>

<%

String[] picked = request.getParameterValues("fruits");

if (picked != null && picked.length != 0) {

%>

You picked the following fruits:

<ul>

<%

for (int i = 0; i < picked.length; i++)

{ out.println(picked[i]);

}

%></ul><% } %></body></html>

Displaying Values<% out.println();%> or <%=variable to be printed%>

<%@ page import="com.ora.jsp.util.*" %>

...

<tr>

<td>Name:</td>

<td><input type="text" name="userName"

value="<%= StringFormat.toHTMLString(userInfo.getUserName( )) %>" >

</td>

</tr>

JavaBean Components in JSP

Use of JavaBean components in JSP are, User input validation Inserting files Forwarding user data into pages Handling data base access

JavaBean Components in JSP

JavaBean components in JSP are, <jsp:useBean> <jsp:getProperty> <jsp:setProperty> <jsp:include> <jsp:forward> <jsp:plugin>

JavaBean Components in JSP

<jsp:useBean>

Syntax:<jsp: useBean

id=”name” scope=” page| request| session| application” class =”test” type=“” >

</jsp: useBean>

userInfopackage chapter09.beans;

public class userInfo implements java.io.Serializable {

private String last_name;

private String first_name;

private String phone;

private String email;

public userInfo() {}

public String getLastName()

{return last_name;}

public void setLastName(String lastName)

{last_name = lastName;}

public String getFirstName()

{return first_name;}public void setFirstName(String firstName) {first_name= firstName;}public String getPhone() {return phone;}public void setPhone(String p) {phone = p;}public String getEmail() {return email;}public void setEmail(String e) {email = e;}}

userInfo for JSP page<%@ page import=”chapter09.beans.userInfo” %><%@ page import=”java.util.*” %><jsp:useBean id=”user” class=”userInfo” scope=”page” /><HTML><HEAD></HEAD><BODY><B>Last Name:</BR><INPUT TYPE=”Text” NAME=”lname” VALUE=”<%= user.getLastName() %>”<B>First Name:</BR> INPUT TYPE=”Text” NAME=”fname” VALUE=”<%= user.getFirstName() %>””><B>Phone:</BR></TD><TD><INPUT TYPE=”Text” NAME=”phone” VALUE=”<%= user.getPhone() %>”INPUT TYPE=”Text” NAME=”email” VALUE=”<%= user.getEmail() %>”</BODY></HTML>

Sharing Data Between PageBy two different ways,

Passing control between pagesPassing data between pages

a. Passing control between pagesBy using <jsp:forward>Attributes are,

<jsp:forward page="userinfoinput.jsp" ><jsp:param name="msg" value="Invalid email address" />

</jsp:forward>

page Example : “test.jsp”

name “name”

value “give any value”

Recommended