DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with...

27
DT228/3 Web Development Java Beans
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    223
  • download

    4

Transcript of DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with...

Page 1: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

DT228/3 Web Development

Java Beans

Page 2: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Intro• A major problem with JSP is tendency to

mix java code with HTML

- web designer write the HTML and programmer writes the java –maintenance issue if mixed

-JSP pages not easy to re-use if both presentation code <html> and business processing code (java) is together –cannot “re-use” business logic

Page 3: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Intro• Java beans provide another mechanism

to hide java code from the JSP page

• Java beans can be easily reused – can create libraries of reusable components for plugging into JSP

• Java beans follow certain rules and guidelines in order to enable their use as components - design patterns

Page 4: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Java beans

• Can be used in any java program or Java Server Page

• Easy to write (programmer)• Easy to use (non programmer)• Can buy java beans to perform

specific functions

Page 5: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Java beans can be used to..

• Reuse graphical component – buttons etc (original intention…)

• Validate user input

• Pass data from one part of an application to another (e.g. person’s details) – i.e. a container for data

• Perform common database functions..

• And more.

Page 6: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Java beans

• Each bean is written in java and compiled as a java class

• Must have a zero argument constructor•Either explicitly include the constructor• OR don’t have any constructor

• Beans have properties Properties can be read only or Properties can be read/write

Page 7: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

•E.g. a java bean called Userbean.java might have properties such as name, address, age..

•Java bean properties can be setand retrieved with setter and getter methods (called accessor methods)

----------------------------------------------------•E.g. a java bean with a property colour

•To read or get the value property colour, use a get method called getColour()

•To update or set the value property colour, use a get method called setColour()

Java bean properties

Page 8: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Properties

NOTE:

• Properties can be read only, read/write:

• Readable properties only have a getter method (i.e. you can’t “set” or update them)

• Read/write properties have a setter and getter method

Page 9: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Design patterns for java beans

• Need to have a way of using bean without knowing a lot about the actual code inside the bean

• Use Design patterns to enable developers to call the bean and use its properties in a standard way.

Page 10: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Design patterns for java beans

• Zero argument constructor

• setPropertyName() methods – consisting of “set” plus property name with each word capitalised

• getPropertyName() methods – consisting of “get” plus property name with each word capitalised

• isPropertyName() method – returns a boolean value

• Property (e.g. firstName) always start with a lower case letter

Page 11: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Simple bean examplepackage com;

public class SimpleBean implements java.io.Serializable { /* Properties .. Always private*/

private String username = null; private int luckynumber = 0;

/* Empty Constructor */ public SimpleBean() {}

/* Getter and Setter Methods */ public String getUsername()

{ return username; }

Allows an object to be saved to disk for re-use later

Properties are private

Access Methods use the property names

Page 12: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Simple bean (cont.)

public void setUsername(String s) {

username = s; } public int getLuckynumber() { return luckynumber; } public void setLuckynumber(int i) { luckynumber = i; }

}

Access Methods use the property names

Page 13: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

JSP Actions for a bean

• JSP container support several JSP actions to use beans within a JSP page

• <jsp:useBean> identifies the bean to use

• <jsp:setProperty> sets bean properties

• <jsp:getProperty> retrieves bean properties

Page 14: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

To use a java bean in a JSP page

• Need to create and compile the bean class

• Place the class file in WEB-INF/classes directory

• Declare the java bean in the JSP page<jsp:useBean id=“simpleBean” class=“com.SimpleBean”

scope=“session” ……/> etcThis creates an instance of the bean

id attribute = name by which the bean will be identified in the JSP page

Class attribute = specifies which bean class to useScope attribute = controls where bean will be kept

Page 15: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

<jsp:useBean id="object-name" scope="page | request | session | application" type="type-of-object" class="fully-qualified-classname" beanName="fully-qualified-beanName" />

JSP Actions: full syntax for reference

<jsp:setProperty name="id-of-the-JavaBean" property="name-of-property" param="name-of-request-parameter-to-use” value="new-value-of-this-property" /><jsp:getProperty name="name-of-the-object" property="name-of-property" />

Page 16: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Scope of a java beanA Java bean is only created when it is needed. Like all objects, has a

concept of scope:

• Page scope (default) – new bean for every page view (bean placed in the PageContext object)

• Request scope – new bean created for every new client request to the page

(bean is placed in the ServletRequest object)

• Session scope – new bean on first request for new user session(bean is placed in the HttpSession object)

• Application scope – new bean first request to the application(bean is placed in the webapplication’s ServletContext)

Page 17: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

JSP that uses a java bean<%@ page language="java" contentType="text/html" %><%@page import="com.SimpleBean"%>

<html> <body bgcolor="white"> <jsp:useBean id="simpleBean" class="com.SimpleBean" scope="session"/> <jsp:setProperty name="simpleBean" property="*" /> The following information was saved: <ul> <li>User Name: <jsp:getProperty name="simpleBean" property="username" /> <li>Lucky number: <jsp:getProperty name="simpleBean" property="luckynumber" /> </ul>

</body></html>

Package name

Page 18: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Capturing user info using a bean

• A form that takes name, birth date, email address, gender, lucky number, favourite foods (radio box..) – and displays what the user has entered when the “submit” button is pressed…

Java bean (e.g. Userinfo.java) is used to 1) capture and hold user info to pass around the application. and… 2) validate user info….

Page 19: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: User info Bean properties

Table 5-2: Properties for UserInfoBean

Property Name Java Type Access Description

userName String read/write The user's full name

birthDate String read/write The user's birth date in the format yyyy-mm-dd (e.g., 2000-07-07)

emailAddr String read/write The user's email address in the format [email protected]

gender String read/write The user's sex (male or female)

luckyNumber String read/write The user's lucky number (between 1 and 100)

valid boolean read true if the current values of all properties are valid, false otherwise

http://www.oreilly.com/catalog/jserverpages/chapter/ch05.html#39961

Page 20: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Capturing User Info

Page 21: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Capturing user info with a Bean - Sample form

<%@ page contentType="text/html" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head> <title>User Info Entry Form</title> </head> <body bgcolor="white"> <form action="input_bean.jsp" method="post"> <table> <tr> <td>Name:</td> <td> <input type="text" name="userName"> </td> </tr> <tr> <td>Birth Date:</td> <td> <input type="text" name="birthDate"> </td> <td>(Use format yyyy-mm-dd)</td> </tr>•

Various Input fields on form..

Page 22: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Capturing user info with a Bean: sample form

<td>Email Address:</td> <td> <input type="text" name="emailAddr"> </td> <td>(Use format [email protected])</td> </tr> <tr> <td>Sex:</td> <td> <input type="radio" name=“gender" value="m" checked>Male<br> <input type="radio" name=“gender" value="f">Female </td> </tr> <tr> <td>Lucky number:</td> <td> <input type="text" name="luckyNumber"> </td> <td>(A number between 1 and 100)</td> </tr> etc..

Various Input fields on form..

Page 23: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

<%@ page language="java" contentType="text/html" %><html> <body bgcolor="white"> <jsp:useBean id="userInfo" class="com.ora.jsp.beans.userinfo.UserInfoBean"> <jsp:setProperty name="userInfo" property="*" /> </jsp:useBean>  The following information was saved: <ul> <li>User Name: <jsp:getProperty name="userInfo" property="userName" /> <li>Birth Date: <jsp:getProperty name="userInfo" property="birthDate" /> <li>Email Address: <jsp:getProperty name="userInfo" property="emailAddr" /> <li>Sex: <jsp:getProperty name="userInfo" property="sex" /> <li>Lucky number: <jsp:getProperty name="userInfo" property="luckyNumber" /> </ul> The user input is valid: <jsp:getProperty name="userInfo" property="valid" />

Example: Capturing user info with a Bean

Create a bean

Assign the properties in the bean to the values in the form.. Quick way using *

Output the values of the bean properties – using bean ID and property name

input_bean.jsp: stores the data into a bean and displays the bean properties

Page 24: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Output of JSP is:

Page 25: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Example: Bean breakdown

• Userinfo bean will contain getter and setter methods for each of the five attribute (name, date of birth, etc.

• To include validation – can simple add methods into the bean to do validation of each of the attributes

– This removes complexity from the JSP page– Gives re-usable functionality via the java bean

(e.g. email address difficult to validate in a JSP page without using scriptlets)

– Maintainance easy - If Validation rule changes – only change once in the java bean –

Page 26: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

To deploy a bean in Tomcat

• Write the java code for the bean (***.java)

• Create a WEB-INF/classes directory in your web application directory structure. Bean code and classes go in here if packages not being used.

• If using packages (see overleaf), create your package directory structure within the WEB-INF/classes directory .. E.g. WEB-INF/classes/com/webdev/beans

• Place .java and .class files in to the relevant directory

• .. And then use the bean in JSP using <jsp:useBean…> etc

• If using packages, remember to put in package declaration in bean .java file (e.g. package com.beans;) – this adds your bean into the package.

Page 27: DT228/3 Web Development Java Beans. Intro A major problem with JSP is tendency to mix java code with HTML  -  web designer write the HTML and programmer.

Note on packages

• Packages help to organise how files are stored within an application (imagine if all java classes were not divided into packages…)

• Sun recommends using a directory structure for packages that is the reverse of the domain name for the web application.. Ensures your package structure is unique. But you can use whatever you want.

• E.g. developing a web application to be used for www.dit.ie... Would make sense to have a directory structure for your beans of WEB-INF/class/ie/dit/beans to store the beans in a package.