Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of...

38
Mark Dixon 1 12 – Java Beans

Transcript of Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of...

Page 1: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 1

12 – Java Beans

Page 2: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 2

Session Aims & Objectives• Aims

– To cover the use of Java Beans

• Objectives,by end of this week’s sessions, you should be able to:

– Create and use a Java Bean

Page 3: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 3

PersonList.jsp

• Class complex

• Pages simpler

<%@page import="Main.*" %><%@page contentType="text/html" pageEncoding="UTF-8"%><%!People p = new People();%><%String html = ""; p.Open(); p.Select("SELECT * FROM Person;"); while(p.Next()){ html += p.get("Surname") + "<br />"; } p.Close();%>

<!DOCTYPE html><html> <head><title>People</title></head> <body> <%=html%> </body></html>

Import Package

Use methods

Create Instance

Page 4: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 4

PersonList.jsp (using Bean)

• Class complex

• Pages simpler

<jsp:useBean id="p" scope="session" class="Main.People" /><%@page contentType="text/html" pageEncoding="UTF-8"%><%String html = ""; p.Open(); p.Select("SELECT * FROM Person;"); while(p.Next()){ html += p.get("Surname") + "<br />"; } p.Close();%>

<!DOCTYPE html><html> <head><title>People</title></head> <body> <%=html%> </body></html>

Create Bean

Use methods

Page 5: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 5

• JavaBean (Bean) = Java class instance

• JSP programming style strongly encourages JavaBeans use

• special tags built-in for JavaBean properties

• JSP + Bean combination– separates page html look from ‘logic’ – i.e. the presentation from the code

JSP and JavaBeans

Page 6: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 6

• Java class meeting specific requirements:

– Must have a zero-argument constructor:public MyBean() { …

}

– All properties private (no public properties)

– data accessed via access methods

What is a JavaBean

Page 7: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 7

BANK ACCOUNT BEAN

0 Parameter constructor Important

Exception is for boolean attributes isXxxx()

Beans MUST be in packages

Get and set methods

MUST conform to getXxxx() and setXxxx()

Can have other methods but method

names cannot look like property get / set

Page 8: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 8

• An attribute is a variable which belongs to an class/object – For objects also known as instance

variables– For classes also known as class variables

• Remember final static int COLOUR_ONE

• Math.PI is a class variable

• A property is an attribute which has getter and setter methods – And that’s it !

REFINING THE TERMINOLOGY

Page 9: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 9

• Read-only properties:

String getAccountID()

• returns the accountID property

• Read/write properties:

void setBalance(double bal)double getBalance()

• Boolean properties:

boolean isActive()void setActive(boolean act)

JAVABEAN PROPERTIES

Page 10: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 10

• It is important to distinguish between a JavaBean as used in a:–GUI development tool

• This is a visual component –i.e. will subclass Panel, Button etc.

• Note there is a visual Bean design tool at:http://java.sun.com/products/javabeans/beanbuilder/

index.jsp

–Server-Side application• We are only dealing with the latter

MORE THAN ONE BEAN

Page 11: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 11

• <jsp: useBean ……… >

• <jsp: setProperty ……… >

• <jsp: getProperty ……… >

BEAN RELATED TAGS

Page 12: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 12

BEANS WITH JSP• A JSP file which makes use of the Class Bank

– Note: file called Bank.jsp

Page 13: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 13

CREATING AN OBJECT

• Creates a bean instance called ‘myAccount’ of type ‘BankAccount’

• The id attribute is the name of the variable • Similar to the following JSP code:<% BankAccount myAccount = new BankAccount(); %>

• Or Java:BankAccount myAccount = new BankAccount();

Note: use of package name

Important

This / is important

Page 14: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 14

SETTING BEAN PROPERTIES 1

• Sets the value of the myAccount property balance to 500

• Basically the same operation as:

<%= myAccount.setBalance(500) %>

• Or in Java as:BankAccount myAccount = new BankAccount();

mybalance = myAccount.setBalance(500);

Page 15: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 15

SETTING BEAN PROPERTIES 2• Also can have a dynamic property which uses an

expression tag

• This example is just setting the balance to some random value between 0 and 100

Page 16: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 16

SETTING BEAN PROPERTIES 3

• Although this value is text

• converted automatically to correct type– In this case a double

Page 17: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 17

READING BEAN PROPERTIES

• Inserts the value of myAccount property balance into the web page

• Basically the same as:<%= myAccount.getBalance() %>

• Or in Java as:BankAccount myAccount = new BankAccount();

double mybalance;mybalance = myAccount.getBalance();

Page 18: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 18

JSP BEANS - REVIEWThis line creates an object called myAccount of class BankAccount

This line sets the balance property to 500

This line gets the balance

Note how the value is displayed on the html page

Page 19: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 19

SETTING BEAN PROPERTIES FROM TEXT

BOXES

• This the same as:

String bal = request.getParamter(“openingbalance”);double tempBal = Double.parseDouble(bal);myaccount.setBalance(tempBal);

Sets the property ‘balance’ to what ever was typed in the textbox.

.jsp Page

.htmlPage

Page 20: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 20

USING TEXTBOXESIf the textbox name is the same name as the property

Then we do not need a ‘param’

Page 21: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 21

SETTING BEAN PROPERTIES … ‘WILDCARDS’

• Using wildcards to set properties:

Sets the value of all ‘somebean’ properties to JSP parameters with the same name If the parameters do not exist, the value of the bean properties do

not change

Page 22: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 22

OpenAccount.html

‘WILDCARDS’ EXAMPLE

NewAccount.jsp

Page 23: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 23

‘WILDCARDS’ EXAMPLE

Page 24: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 24

scope = “page”

scope = “request”

• These beans will not last after the request is completed– The difference between these 2 scopes is very small– Beans such as this do not allow you to share data between

servlets and JSPs

scope = “application”

scope = “session”

• These beans will last between requests, thus allowing sharing of data between requests– Again, the differences between these two requests are mostly

cosmetic

JAVABEAN SCOPE 1The default scope

Page 25: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 25

SESSION BEANS

As Bank.jsp and Rent.jsp are scoped at session level, the object myAccount is not created in Rent.jsp

File: Rent.jsp

Page 26: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 26

SESSION BEANS

File: Rent.jsp

File: Bank.jsp

The file Bank.jsp

Creates the object myAccount, which is then used by Rent.jsp

Essentially passing information between JSP pages

Page 27: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 27

CONDITIONAL BEANS

• So far we have used the <jsp: useBean id =“somebean…. > tag – jsp:useBean results in new bean being created only if no bean with

same id and scope can be found– If a bean with same id and scope is found, then that bean is used.

• This means that any property we initially set will be again be set each time we visit the page

• This is ok when we visit the a page for the 1st time as we want to set the properties of the bean which will be used across several pages.

• But what if we wanted to set initial bean properties for a bean which is shared by multiple pages.

• Since we don’t know which page will be accessed first, we don’t know which page should contain the initialization code.

Page 28: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 28

EXAMPLE:• Lets assume we have a ‘back’ link on the PayRent.jsp

??? Balance should be 350.00

Page 29: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 29

• Problem is that when we return to the Bank.jsp page the setProperty sets the balance to 500 again

Page 30: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 30

SOLUTION: CONDITIONAL BEAN• The <jsp:useBean ... />• replaced by

<jsp:useBean ...> statements </jsp:useBean>

• The statements (i.e. jsp:setProperty elements) are executed only if a new bean is created, not if an existing bean is found.

This is subtle but the effects are profound

Modified file: Bank.jsp

Page 31: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 31

EXAMPLE:• Now we have

Balance is correct at 350.00

Page 32: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 32

• Apache – http server (html pages)

• Tomcat – runs JSP + Servlets– servlet container (interpreter/compiler)– Can run:

• Standalone– Handles simple page requests– Handles servlet requests

• Apache plugin– Apache handles HTML pages, CGI, PHP etc– Tomcat handles servlets

Apache Tomcat

Page 33: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 33

Tomcat: LocalHost

Page 34: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 34

Directory Description context root This is the root directory for the Web application.

All JSPs, HTML documents, and supporting files reside in this directory or subdirectories. Name of directory is specified by the Web creator. To provide structure in a Web application, subdirectories can be placed in the context root. i.e. /images

WEB-INF This directory contains the Web application deployment descriptor (web.xml)

WEB-INF/classes Contains the servlet class files and other supporting class files used in a Web application. If the classes are part of a package, the complete package directory structure would begin here.

WEB-INF/lib This directory contains Java archive (JAR) files. JAR files can contain servlet class files and other supporting class files used in a Web application.

Tomcat Directory Structure

Page 35: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 35

Tomcat Folder StructureContext root

Starting html page

Web application deployment descriptor (web.xml) Package name of

the HelloServlet class

The HelloServlet class

NetbeansWill create this

Structure …

Page 36: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 36

• fgfg

Default location is in webapps

Can have any number of

webapplications in webapps

But each need WEB-INF and

web.xml

Tomcat Folder Structure

Page 37: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 37

Tomcat - NetBeans• JRE_HOME = C:\Program Files\Java\jre6

– Control Panel– System– Advanced– Environment Variables

• C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.14\bin– startup.bat (run from command line)

• http://localhost:8080/

Page 38: Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,

Mark Dixon 38

• Hall, M. Servlets and Java Server Pages 2nd Edition– Chapter 14: Using Beans with JSP

• Best coverage

• Armstrong, E. (2003) The J2EE 1.4 Tutorial – chapter 12: Pages 515 - 525

• http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

38

REFERENCES - READ AT LEAST ONE OF …