11. java-based web: jsp, jsf. 2 motto: rule 1: our client is always right rule 2: if you think our...

18
11. Java-Based Web: JSP, JSF

Upload: rafe-lawson

Post on 25-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

11. Java-Based Web: JSP, JSF

Page 2: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

2

Motto:

Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1.

- Anonymous

Page 3: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

3

• Servlets• JSP (JavaServer Pages)• JSF (JavaServer Faces)• JavaBeans components• Netbeans IDE (Integrated Development Environment) for

Java-based web applications• JSP Example

Page 4: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

4

Servlets

• Java-based components that use the HTTP request-response model of client-server communication

• Servlet "container" executes servlets and manages their life cycle

• Servlet APIs– javax.servlet and javax.servlet.http

Page 5: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

5

Servlet Container

1. Container Receives an HTTP request from a client

2. Container forwards the request to the corresponding servlet

3. Servlet processes the request and generates XHTML document

4. Container returns the page to the client

Page 6: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

6

Servlet Life Cycle

• Servlet must implement javax.servlet.Servlet interface

• I.e., it must implements methods called by servlet container when the servlet’s life cycle changes– init()

• called only the first time there is a request for the servlet

– service()• called for each request• receives the request, processes it and generates a response

– destroy()• called when servlet is terminated• releases all resources

Page 7: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

7

JSP Concepts• JSP (JavaServer Pages) are web page templates that

correspond to servlets• JSP allow to

– separate presentation from content– create dynamic content

• predefined components

• server-side scripting for interaction with the components

• JSP container converts a JSP page into a servlet– upon the first request for the page– the servlet handles all requests to the JSP

• JSP use the same request/response mechanism as servlets

• JSP APIs– javax.servlet.jsp and javax.servlet.jsp.tagext

Page 8: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

8

JSP Components

• Key components – directives– actions– scripting elements – tag libraries– static content

• JavaBeans and custom tag libraries– encapsulate complex, dynamic functionality– hide code for complex operations

• e.g., database access

– allow web-page designers to add dynamic content to web pages• even without knowledge of Java

• JSTL (JavaServer Pages Standard Tag Library) – provide many common web application tasks

Page 9: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

9

JSP Components (cont.)• Directives

– define page settings and content from other resources – add custom tag libraries– send messages to JSP container

• Actions – implement functionality of predefined tags – implement client requests– create Java objects needed in JSP

• Scripting elements – Java code that interacts with JSP components and process requests

• Tag libraries – let programmers create custom tags– JSTL provide standard, predefined tags

• Static content – XHTML or XML markup– text: translated to a String object in the corresponding servlet

Page 10: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

10

JSF

• JavaServer Faces– simplify the design of an application’s GUI– separate a web application’s presentation from its

business logic• JSF custom tag libraries

– user interface components– APIs for handling component events

• The programmer defines – look-and-feel of a JSF page by adding custom tags to a JSP file

and setting the tag's attributes– page’s behavior in a separate Java code file

Page 11: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

11

Netbeans

• IDE (Integrated Development Environment) for Java– from Sun, but free– similar, but different from Eclipse– plugins for web applications development

• Netbeans includes– visual designer for dropping components onto a page– text editor editing its .jsp file manually

• Netbeans web applications – JSPs built with JSF

• .jsp file contains also page’s GUI elements

– a page bean (i.e. a JavaBean class) for each JSP page

Page 12: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

12

Page Beans

• Page bean defines – properties of page elements

• getProperty()and setProperty() methods

– event handlers– methods

• page life-cycle methods • supporting code

• Netbeans web application is composed of– page beans– RequestBean– SessionBean– ApplicationBean

Page 13: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

13

Web Application Beans

• RequestBean– request scope– exists only during an HTTP request

• SessionBean– session scope– exists while the user is browsing or until the session times out– unique for each user

• ApplicationBean– application scope– shared by all instances of the application

• regardless of the number of open sessions

– exists while the application is deployed – application-wide data storage and processing

Page 14: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

14

Example

• copyright 2007 Pearson Education

Page 15: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

15

Example's JSP<?xml version = "1.0" encoding = "UTF-8"?>

<!–- Textbook Fig. 26.1: Time.jsp copyright 2007 Pearson Education -->

<jsp:root version = "1.2" xmlns:f = "http://java.sun.com/jsf/core"

xmlns:h = "http://java.sun.com/jsf/html" xmlns:jsp = "http://java.sun.com/JSP/Page"

xmlns:webuijsf = "http://www.sun.com/webui/webuijsf">

<jsp:directive.page contentType = "text/html;charset=UTF-8" pageEncoding = "UTF-8" />

<f:view>

<webuijsf:page binding = "#{Time.page}" id = "page">

<webuijsf:html binding = "#{Time.html}" id = "html">

<webuijsf:head binding = "#{Time.head}" id = "head" title = "Web Time">

<webuijsf:link binding = "#{Time.link}" id = "link" url = "/resources/time.css"/>

<webuijsf:meta content = "60" httpEquiv = "refresh" />

</webuijsf:head>

<webuijsf:body binding = "#{Time.body}" id = "body" style = "-rave-layout: grid">

<webuijsf:form binding = "#{Time.form}" id = "form">

<webuijsf:staticText binding = "#{Time.timeHeader}" id = "timeHeader"

style = "font-size: 18px; left: 24px; top: 24px; position: absolute"

text = "Current time on the web server:" />

<webuijsf:staticText binding = "#{Time.clockText}" id = "clockText"

style = "background-color: black; color: yellow; font-size: 18px; left: 24px;

top: 48px; position: absolute" />

</webuijsf:form>

</webuijsf:body>

</webuijsf:html>

</webuijsf:page>

</f:view>

</jsp:root>

Page 16: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

16

Example's Java Code// Textbook Fig. 26.3: Time.java copyright 2007 Pearson Education

// Page bean file that sets clockText to the time on the Web server.

package webtime;

import com.sun.rave.web.ui.appbase.AbstractPageBean;

import com.sun.webui.jsf.component.*;

import java.text.DateFormat;

import java.util.Date;

import javax.faces.FacesException;

public class Time extends AbstractPageBean {

private Page page = new Page ();

private Html html = new Html ();

private Head head = new Head ();

private Link link = new Link ();

private Body body = new Body ();

private Form form = new Form ();

private StaticText timeHeader = new StaticText ();

private StaticText clockText = new StaticText ();

private Meta meta = new Meta ();

public Page getPage () {return page;}

public void setPage (Page page) {this.page = page;}

public Html getHtml () {return html;}

public void setHtml (Html html) {this.html = html;}

public Head getHead () {return head;}

public void setHead (Head head) {this.head = head;}

Page 17: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

17

Example's Java Code (cont.) public Link getLink () {return link;}

public void setLink (Link link) {this.link = link;}

public Body getBody () {return body;}

public void setBody (Body body) {this.body = body;}

public Form getForm () {return form;}

public void setForm (Form form) {this.form = form;}

public StaticText getTimeHeader () {return timeHeader;}

public void setTimeHeader (StaticText text) {this.timeHeader = text;}

public StaticText getClockText () {return clockText;}

public void setClockText (StaticText text) {this.clockText = text;}

public Meta getMeta () {return meta;}

public void setMeta (Meta meta) {this.meta = meta;}

/* Constructs new Time */

public Time () {}

/* Initializes page */

public void init () {super.init ();}

Page 18: 11. Java-Based Web: JSP, JSF. 2 Motto: Rule 1: Our client is always right Rule 2: If you think our client is wrong, see Rule 1. - Anonymous

18

Example's Java Code (cont.) /* Called on postback */

public void preprocess () {}

/* Sets the clock. Called before page is rendered */

public void prerender () {

DateFormat formatter = DateFormat.getTimeInstance (DateFormat.LONG);

clockText.setValue (formatter.format (new Date ()));

}

/* Called after page is rendered */

public void destroy () {}

/* Returns a request bean */

protected RequestBean1 getRequestBean1 () {

return (RequestBean1) getBean ("RequestBean1");

}

/* Returns a session bean */

protected SessionBean1 getSessionBean1 () {

return (SessionBean1) getBean ("SessionBean1");

}

/* Returns an application bean */

protected ApplicationBean1 getApplicationBean1 () {

return (ApplicationBean1) getBean ("ApplicationBean1");

}

}