java server pages, jsp...java server pages, jsp java server pages, jsp java server pages is a...

42

Upload: others

Post on 06-Jul-2020

27 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Java Server Pages, JSP

Java Server Pages, JSP

Java server pages is a technology for developing web pages that includedynamic content.

A JSP page can change its output based on variable items, identity of theuser, the browsers type and other information

(2009-10-29 � 1.1 )

Page 2: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

A JSP contains

I HTML

I JSP elements

I Scriptlets

I User de�ned tags, including JSTL, Java Standard Tag Library

JSP elements can be used to access JavaBeans, passing control to otherpages and servlets, sharing information between requests and users.

JSTL adds functionality such as selections, iterations, translations etc.

A user de�ned tag can do whatever you like. It is used to extend thefunctionality of a JSP and to hide implementaton details of some algorithm.

(2009-10-29 � 1.2 )

Page 3: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Other techniques:

I CGI, Common Gateway InterfaceThis is an executable program that is started by the server and thatoutputs HTML. A CGI is written in any language and compiled andbuilt, this means that it is platform dependent. Requires moreresources because it is started for each request, runs and terminates.

I ASP and .NETSimilar to JSP but based on Visual Basic. Active X componentswritten in other languages (eg C++) can be invoked by scripts.Database access tools. Newer versions (.NET) compiles and is moree�cient, uses languages like C#, JScript.NET etc. Limited supportfor nonWindows systems.

(2009-10-29 � 1.3 )

Page 4: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

I PHPPHP is a freeware scripting language. Looks like a mixture of Perl,C++ and Java. Can communicate with the mySQL database, sendmail etc. Widely supported.

I Coldfusion.Same principles as PHP, uses CFML, ColdFusion Markup Language.Can communicate with Java Servlets and EJB's. C++ or Java can beused to customize it.

(2009-10-29 � 1.4 )

Page 5: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

JSP advantages:

I Can be customized and extended using user de�ned tags.

I Compiled for increased e�ciency.

I Used in combination with servlets and beans.

I JSP is not a product but a speci�cation. There are severalimplementations.

I Widely used, will live long.

I An integral part of Java EE, the complete platform to developwebapplications.

(2009-10-29 � 1.5 )

Page 6: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

What you need:

I A Java 2 Software Development Kit, Java SE.

I The Servlet API

I A JSP enabled web server like Tomcat or Glass�sh.

(2009-10-29 � 1.6 )

Page 7: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

A JSP is either a plain JSP page using JSP elements or a well formed,namespace aware XML-document. These are called JSP Documents anduses a somewhat di�erent syntax to adhere to the XML rules.

We will see examples of JSP documents later in the course. Here we willonly describe plain JSP pages.

(2009-10-29 � 1.7 )

Page 8: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Anatomy of a JSP page

The main parts are JSP elements and template texts.

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

<html>

<body bgcolor="white">

<jsp:useBean id = "userInfo" class= "com.ora.jsp.beans.userInfoBean">

<jsp:setProperty name="userInfo" property="*"/>

</jsp:useBean>

The following information was saved:

<ul>

<li> User Name:

<jsp:getProperty name="userInfo" property="userName"/>

<li> Email Address:

<jsp:getProperty name="userInfo" property="emailAddr"/>

</ul>

</body>

</html>

(2009-10-29 � 1.8 )

Page 9: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

JSP processing

Servlet.java

Hello.jsp

Hello−

Servlet.class

compile

compile

Container

GET

Hello.jsp

HTTP/1.1

200 OK

<html>

hello!

</html>

Client

read

run

generate

Hello−

Server and

Figure: JSP processing

Once compiled and loaded it remains loaded until the connection is closedor until the JSP is changed.. A JSP is usually considered to be threadsafe.

(2009-10-29 � 1.9 )

Page 10: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

JSP elements

Directives:

I <%@page ... %> De�nes page speci�c attributes

I <%@include ... %> Includes a �le during translation

I <%@taglib ... %> Declares a tag library

(2009-10-29 � 1.10 )

Page 11: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Standard action elements:

I <jsp:useBean> Make a JavaBean available

I <jsp:getProperty> Get a property from a Bean

I <jsp:setProperty> Set a property in a Bean

I <jsp:include> Include the response from a servlet or JSP duringrequest processing

I <jsp:forward> Forward the request

I <jsp:param> Add a parameter value to a request handed o� toanother servlet or JSP

I <jsp:plugin> generate HTML that is needed to execute an applet in abrowser

(2009-10-29 � 1.11 )

Page 12: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Scripting elements:

I <% ... %> Scriplet to embed code

I <%= ... %> Embeds an expression that produces a value. Thatvalue, a String, is part of the response

I <%! ... %> Declaration of instance variables and methods.

I <%� ... �%> Comment

Note that you cannot have instance variables in a threadsafe page.

In Java code you can also use normal Java comments. They are ignored.

In the HTML code you can use HTML comments. They are processed andsent to the browser, that ignores them.

(2009-10-29 � 1.12 )

Page 13: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

JSP environment:

There are some objects that are available to a JSP

I request, The request object

I response, The response object

I pageContext, attributes speci�c to this page

I session, attributes speci�c to this session

I application, attributes for this application

I out, a PrintWriter that can used for output in scriplets

etc

more about these later on

(2009-10-29 � 1.13 )

Page 14: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Where should my .jsp �le be stored?

Tomcat searches for JSP's in the root catalogue of the web application.

This is usually called webapps/nnnn where nnnn is the name of yourapplication.

You can use the JSP using the URL http://localhost:8080/nnnn/xxx.jsp

(2009-10-29 � 1.14 )

Page 15: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

An example of a JSP is:

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

<HTML>

<HEAD><TITLE>

Calendar: A JSP APPLICATION

</TITLE></HEAD>

<BODY BGCOLOR="white">

<jsp:useBean id="table" scope="session" class="cal.TableBean" />

<% String time = request.getParameter ("time");%>

<FONT SIZE=5> Please add the following event:

<BR> <h3> Date <%= table.getDate() %>

<BR> Time <%= time %> </h3>

</FONT>

<FORM METHOD="POST" ACTION="cal1.jsp">

<BR>

<BR> <INPUT NAME="date" TYPE="HIDDEN" VALUE="current">

<BR> <INPUT NAME="time" TYPE="HIDDEN" VALUE=<%= time %>

<BR> <h2> Description of the event

<INPUT NAME="description" TYPE="TEXT" SIZE="20">

</h2>

<BR> <INPUT TYPE="SUBMIT" VALUE="submit">

</FORM>

</BODY></HTML>

(2009-10-29 � 1.15 )

Page 16: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The page directive:

<%@ page name=�value�%>

parameters:

I language default is java

I extends default is the JSP class

I import imports packages or classes

I session True or False, determines if a session should be automaticallycreated. True is default

I bu�er The output bu�er size

I autoFlush True or False, whether or not output should be �ushed tothe client, True is default

(2009-10-29 � 1.16 )

Page 17: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

I isThreadSafe True or false, True is default

I info descriptive text

I errorPage The page to be used in case of errors

I contentType MIME-coding of output

I isErrorPage True or False. Whether this is an errorpage or not. Falseis default

I pageEncoding The character set used in the page

(2009-10-29 � 1.17 )

Page 18: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The forward action:

<jsp:forward page=�contextrelative URL�/>

Forward the request to another component with the given URL. Note thatthe current component continue to execute but must not touch theresponse any longer.

(2009-10-29 � 1.18 )

Page 19: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The include directive:

<%@ include �le=�contextrelative URL� %>

and the include action:

<jsp:include page=�contextrelative URL� �ush = "True/False� />

The parameter speci�es whether or not to �ush the bu�er before includingthe target.

The param action is used in the body of include or forward to addadditional parameters

<jsp:include page="navigation.jsp">

<jsp:param name="bgColor" value="#CC0000"/>

</jsp:include>

(2009-10-29 � 1.19 )

Page 20: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The useBean action

Instantiates and/or gives access to a Bean object. If the Bean object existsit is not instantiated.

<jsp:useBean id = "instance name"

scope="page|session|request|application"

class="packagepath.classname"/>

I id is the identi�cation used when accessing the Bean i. e. a variablethat holds a reference to the object.

I scope is the desired scope.

I class is the fully quali�ed class name, not the �le path. This classname is relative to context-path/WEB-INF/classes.

(2009-10-29 � 1.20 )

Page 21: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The getProperty/setPropery action

<jsp:getProperty name="beanID" property="propertyname"/>

<jsp:setProperty name="beanID" property="propertyname"

value = "value" | param = "requestparameter"/>

Either you give an explicit value or the name of a request parameter.

A property name can be "*'", this means that request parameters thatmatches properties by name will be copied. This is a way to copy a lot ofdata from the request object to a bean object.

(2009-10-29 � 1.21 )

Page 22: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

An example of a JSP

<html><head>

<title>Login Page for the Bookshop</title>

</head>

<body bgcolor="white">

<form method="POST" action='<%=response.encodeURL("j_security_check") %>' >

<table border="0" cellspacing="5" align="center">

<tr>

<td colspan="2" bgcolor="#FFDC75">

<h2>Log in to the Bookshop</h2></td>

</tr>

<tr>

<td colspan="2"></td>

</tr>

<tr>

<th align="right">Username:</th>

<td align="left"> <input type="text" name="j_username"></td>

</tr>

(2009-10-29 � 1.22 )

Page 23: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

<tr>

<th align="right">Password:</th>

<td align="left"><input type="password" name="j_password"></td>

</tr>

<tr>

<td align="right"><input type="submit" value="Log In"></td>

<td align="left"><input type="reset"></td>

</tr>

</table>

</form>

</body></html>

(2009-10-29 � 1.23 )

Page 24: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Another example

<%@page contentType="text/html" isErrorPage="true" %>

<html>

<head><title>Errorpage</title></head>

<body>

An error has occured:<%= exception.getMessage() %>

</body>

</html>

(2009-10-29 � 1.24 )

Page 25: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

A third example

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

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

<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Hello World</title></head>

<body>

<h2>The current time is: </h2>

<p>

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

<jsp:useBean id="tb" scope="request" class="com.mimer.fredrik.TestBean">

Error, the instance is created elsewhere

</jsp:useBean>

<h1>

<jsp:getProperty name="tb" property="name" />

</h1>

</body>

</html>

(2009-10-29 � 1.25 )

Page 26: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

A simple bean class.

package com.mimer.fredrik;

public class TestBean {

private String name;

private Integer age;

public TestBean() {}

public String getName() {

return name;

}

public void setName(String newName) {

name = newName;

}

public Integer getAge() {

return age;

}

public void setAge(Integer newAge) {

age = newAge;

}

}

(2009-10-29 � 1.26 )

Page 27: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

As said before there are a number of environment objects available to apage. These are maps, i. e. they contain name-value pairs. These arecalled attributes. They are created and maintained within the container,except for the request context that is created by the client.

The request object also contains name-value pairs transmitted from theclient. These are called parameters. The request, page, session andapplication scopes are all used to transfer data between di�erentcomponents.

(2009-10-29 � 1.27 )

Page 28: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Client

Request Request

Response

Response

Page Page

RequestRequest

Application, all users

Session, this user

Figure: The JSP context

(2009-10-29 � 1.28 )

Page 29: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Parameters are unique to the request scope, otherwise the scopes aresimilar.

The session is user speci�c.

The page is page speci�c

The application contains the global environment, attributes etc., i. e. it isapplication speci�c.

(2009-10-29 � 1.29 )

Page 30: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

The requests lifetime is one request, i. e. one request from a browser. It isused to transfer data from the browser. You can also use it to addattributes that are to be used during the request.

Most important methods are:

I getAttribute(String name)

I setAttribute(String name, Object Attribute)

I getParameter(String param)

I getParameterValues(String param)

I getParameterMap()

I getRequestDispatcher(String path)

(2009-10-29 � 1.30 )

Page 31: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Some short examples showing how to retrieve data from an HTML form

<%

String rockCheckBox = request.getParameter("Rock");

// returns a String or null

if (rockCheckBox != null) {

%>

You checked Rock music

<%

}

%>

Note the use of start/end markers around the text we do output. If wedidn't do this we would need a printstream to output the string.

(2009-10-29 � 1.31 )

Page 32: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

If you have a multiple select you can get the selected choices like this

<%

String [] selectedCountries = request.getParameterValues("countries");

// return the selected items

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

%>

<%= selectedCountries[i] %> <br>

<%

}

%>

(2009-10-29 � 1.32 )

Page 33: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

To retrieve all parameters passed from the browser you can do

<%

Map parameters = request.getParameterMap();

Iterator i = parameters.keySet().Iterator();

while (i.hasNext()){

String parameterName = (String) i.next();

String parameterValue = request.getParameter(parameterName);

%>

<%= parameterName %> has value

<%= parameterValue %>. <br>

<%

}

%>

(2009-10-29 � 1.33 )

Page 34: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Note that you can use the out IOstream to print, like this

<%

Map parameters = request.getParameterMap();

Iterator i = parameters.keySet().Iterator();

while (i.hasNext()){

String parameterName = (String) i.next();

String parameterValue = request.getParameter(parameterName);

out.println(parameterName + " has value " + parameterValue + ".<br>");

}

%>

This is not really recommended, since it sort of violates the idea of a JSP,to abstract away Java.

(2009-10-29 � 1.34 )

Page 35: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

EL, the Expression Language

The expression language is used to extend the "coding capability" of a JSP,thereby reducing the requirement for Java-scriptlets. You reach a higherlevel of abstraction.

The basic syntax element in EL is

${expression}

where expression is something that results in some kind of value.

(2009-10-29 � 1.35 )

Page 36: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Instead of saying

<%= request.getParameter("�rstName"); %>

you say

${param.�rstName}

(2009-10-29 � 1.36 )

Page 37: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>

Hello World

</title>

</head>

<body>

<h2>The value of action is: <%= request.getParameter("action") %></h2>

<h2>The value of action is: ${param.action}</h2>

<p>

</body>

</html>

Increases the readability alot. You avoid the explicit Java code.

(2009-10-29 � 1.37 )

Page 38: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Reserved words in EL:

and, eq, gt, true, instanceof, or, ne, le, false, empty, not, lt, ge, null, div

and mod.

Operators in EL, (in the order of preference)

[], .

()

-, !, not, empty

*, /, div, %, mod

+,-

<, >, <=, >=, lt, gt, le, ge

==, !=, eq, ne

&&, and

||, or

?:

(2009-10-29 � 1.38 )

Page 39: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

You can use literals of type

I Boolean, true or false

I Integer, 1 23

I Floating Point, 2.4 0.5e-4

I String, "Hello� 'Hi'

I Null, null

(2009-10-29 � 1.39 )

Page 40: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

There are a number of implicit (prede�ned) objects

I pageContext, the pageContext object

I pagescope, a Map that maps attributes to values

I requestscope, -�-

I sessionscope, -�-

I applicationscope, -�-

I param, a Map that maps parameters to values

I initParam. a Map that maps initializationparameters to values

etc

(2009-10-29 � 1.40 )

Page 41: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Examples;

${sessionScope.firstName}

${firstName}

${param.action}

${paramValues["lastName"]}

${param.action == 'show'}

${4.0 > 3}

The sum of ${1} and ${3} is ${1 + 3}

${param.action == 'show' ? paramValues["lastName"] : null}

(2009-10-29 � 1.41 )

Page 42: Java Server Pages, JSP...Java Server Pages, JSP Java Server Pages, JSP Java server pages is a technology for developing web pages that include dynamic content. A JSP page can change

Why do we need EL?

To reach a higher level of abstraction in our JSP's, we don't need theexplicit scriptlets to access scoped Java objects.

EL can also be used to simplify the usage of beans Instead of

<jsp:useBean id="user'' class="com.jspbook.User"/>

<jsp:getProperty name="user" property="name"/>

You can say

${user.name}

provided that the bean is an attribute in some scope.

(2009-10-29 � 1.42 )