Language Evaluation Criteria

jetmorebrisketΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 5 χρόνια και 2 μήνες)

310 εμφανίσεις

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



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




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

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


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

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


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


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

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

12

Page Beans


Page bean defines


properties of page elements


get
Property
()
and
set
Property
()
methods


event handlers


methods


page life
-
cycle methods


supporting code


Netbeans web application is composed of


page beans


RequestBean


SessionBean


ApplicationBean


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

14

Example








copyright 2007 Pearson Education

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
>




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;}

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 ();}



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");


}

}