Introduction to JSP with Forms and JavaBeans - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Introduction to JSP with Forms and JavaBeans

Description:

This doesn t look anymore like an HTML code. What is the point of JSP then, is it to get messy code!! So, sun devised a remedy for that and the final result looked ... – PowerPoint PPT presentation

Number of Views:92
Avg rating:3.0/5.0
Slides: 36
Provided by: rafik
Category:

less

Transcript and Presenter's Notes

Title: Introduction to JSP with Forms and JavaBeans


1
Introduction to JSPwith Forms and JavaBeans
2
Overview
  • Embeds Java code
  • In HTML tags
  • When used well
  • Simple way to generate dynamic web-pages
  • When misused (complex embedded Java)
  • Terribly messy (and may violate OaOO)
  • Keep the embedded Java simple
  • Use external helper classes (Beans?)

3
How does JSP work?
4
Life Cycle
  • A JSP page is translated into a Java Servlet
  • And then compiled
  • On Tomcat, the compilation happens the first time
    a page is requested
  • First request can be very slow!
  • Afterwards, just as fast as a Servlet (because it
    is then a servlet)

5
Hello World
  • lthtmlgt
  • ltheadgt lttitlegt Hello JSP lt/titlegt lt/headgt
  • ltbodygt
  • ltpgt Hello World
  • lt new java.util.Date() gt
  • lt/pgt
  • lt/bodygt
  • lt/htmlgt

6
Date_jsp.java (extract)
  • This extract shows the part that produces the
    output compare it with the JSP
  • out pageContext.getOut()
  • _jspx_out out
  • out.write("lthtmlgt\r\n")
  • out.write("ltheadgt ")
  • out.write("lttitlegt Hello JSP ")
  • out.write("lt/titlegt ")
  • out.write("lt/headgt\r\n")
  • out.write("ltbodygt \r\n")
  • out.write("ltpgt Hello World\r\n ")
  • out.print( new java.util.Date() )
  • out.write("\r\n")
  • out.write("lt/pgt\r\n")
  • out.write("lt/bodygt\r\n")
  • out.write("lt/htmlgt\r\n")

7
Produced
8
Basic Constructs
  • So far weve seen literals
  • E.g. lthtmlgt
  • Copied straight to output (to browser)
  • And expressions
  • E.g. lt new java.util.Date() gt
  • Return a value included in the output
  • Also have
  • Directives, Declarations and Scriptlets

9
Directives
  • Instructions to the compiler
  • Examples
  • Include another page (compile-time)
  • lt_at_ include file"header.jsp" gt
  • ltjspinclude page"page.jsp" flush"true" /gt
  • What is the difference ???
  • Import some Java packages (comma sep.)
  • lt_at_ page importjava.util.Collectiongt

10
JSP Tags
  • These are tags that start with the word jsp as in
    the previous example
  • These are mainly for handling form beans as will
    be shown later apart from 3 tags.
  • ltjspforward, to forward user to another page
  • ltjspforward page"/servlet/login" /gt
  • ltjspplugin, to import plugin as a java applet in
    the client browser.
  • ltjspplugin typeapplet code"Molecule.class"
    codebase"/html"gt
  • ltjspinclude, to include the result of a jsp page

11
Declarations
  • Used to declare variables and methods
  • Go in the declaration section of the Servlet
  • Can then be used later in the JSP page
  • Note the syntax
  • Examples
  • lt! int count 0 gt
  • lt! double sqr(double x) return x x
    gt

12
Scriptlets
  • These are sections of Java code embedded in the
    page
  • Unlike expressions, they do not return a value
  • But may write directly to the page
  • Get the writer response.getWriter()
  • They go in the service method of the servlet
  • Get executed each time a page is requested

13
Illustrative Example
  • Demonstrates much of the above
  • lt! int n 0 gt
  • Page accessed lt n gt times
  • lt if ( (n 10) 0 )
  • n 0
  • gt

14
What happens on next refresh?
15
JSP objects
  • Application
  • Config
  • Out
  • Request
  • Response
  • Session

16
Request and Response
  • Each JSP page has access to two special objects
  • The Request object carries information passed by
    the HTTP request (e.g. made by the browser)
  • This includes any submitted form data
  • The Response object is used to pass information
    back to the Client (browser)
  • E.g. response.getWriter() provides an output
    stream for direct writing to the client

17
Form Handling with JSP
  • JSP makes form handling easy
  • Can use request.getParameter() to get submitted
    values
  • Or can define a JavaBean to grab the values
    semi-automatically.
  • Well see this in action later with a simple
    example

18
Processing form input
  • Global object request, session
  • lt session.putValue(username,
    request.getParameter(UserName)) gt
  • lthtmlgtltbodygt
  • Thanks for giving us your name, lt
    session.getValue(username) gt
  • lt/bodygtlt/htmlgt

19
Form Processing
  • The form can specify whether data is supplied via
    a GET or POST request
  • POST is the usual way
  • Therefore, a servlet should implement the
    doPost() method to process a form
  • JSP hides these GET/POST details (see
    request.getParameter and ltjspsetPropertygt)

20
Form Processing Architectures
  • Helper classes for servlets
  • To generate forms ( other HTML)
  • Process the form input
  • JSP JavaBeans (more later)
  • JSP Tag Library (will be covered later)

21
JavaBeans
  • Come in two types
  • Simple (this course)
  • Enterprise (EJB more complex, not covered)
  • Simple JavaBeans
  • Data bound classes
  • Define properties (fields)
  • Define get/set methods
  • See following example

22
Hotel Booking Form
23
HTML (body) for Booking Form
  • ltbodygt
  • lth3 align"center"gtWelcome to the Hotel
    Californialt/h3gt
  • ltform method"POST" action"BookHotel.jsp"gt
  • ltpgtName ltinput type"text" name"name"
    size"20"gtlt/pgt
  • ltpgtHow many nights
  • ltselect size"1" name"nNights"gt
  • ltoption selected""gt1lt/optiongt
  • ltoptiongt2lt/optiongt
  • ltoptiongt3lt/optiongt
  • lt/selectgtlt/pgt
  • ltpgt
  • ltinput type"submit" value"Submit" name"B1"gt
  • lt/pgt
  • lt/formgt
  • lt/bodygt

24
Accessing Submitted Values(manual version)
  • lthtmlgt
  • ltheadgtlttitlegtBean testlt/titlegtlt/headgt
  • ltbodygt
  • lth2gt
  • ltrequest.getParameter("name") gt
  • to stay for
  • lt request.getParameter("nNights") gt nights.
  • lt/h2gt
  • lt/bodygt
  • lt/htmlgt

25
JavaBean Version (Auto)
  • ltjspuseBean id'roomBooking'
  • scope'page'
  • class'beans.HotelBean'
  • /gt
  • ltjspsetProperty name'roomBooking' property''
    /gt
  • lthtmlgt
  • ltheadgtlttitlegtBean testlt/titlegtlt/headgt
  • ltbodygt
  • lth2gt ltroomBooking.getName()gt
  • to stay for
  • lt roomBooking.getnNights() gt nights.
    lt/h2gt
  • lt/bodygt
  • lt/htmlgt

26
Java Code for Bean Version
  • package beans
  • public class HotelBean
  • String name
  • int nNights
  • public String getName()
  • return name
  • public void setName(String name)
  • this.name name
  • public int getnNights()
  • return nNights
  • public void setnNights(int nNights)
  • this.nNights nNights

27
Resulting Page
28
Bean Scope
  • Note the setting scope'page'
  • Scope has four possible settings
  • Page
  • Bean exists for execution of that page only
  • Request
  • Like page, but survives any forward or include
    requests

29
Bean Scope (cont.)
  • Session
  • The Bean exists for multiple requests within the
    web application, from a particular web browser
    instance
  • Used for shopping baskets etc.
  • Application
  • The Bean exists for all requests from all users,
    for all pages that use it.
  • Survives until the Web Application Server is
    restarted
  • Can be used for a database connection (or
    connection pool)

30
Beans v. Manual
  • For this example, consider the differences
  • JavaBean JSP page more complex
  • JavaBean also required an external class
    definition
  • Discussion question
  • When would JavaBean solutions be better than
    manual versions?
  • Answer

31
Functions
  • lt_at_ page import"java.util." gt
  • ltHTMLgt
  • ltBODYgt
  • lt!    
  • Date theDate new Date()    
  • Date getDate()            
  • return theDate    
  • gt
  • Hello!  The time is now lt getDate() gt
  • lt/BODYgt
  • lt/HTMLgt

32
Functions
  • The JSP can get really intractable with lots of
    scriplets
  • A direct example of using scriplet is a for loop
    to display records from a database in a table
    format.
  • Put the code for the view in a function and call
    it as much as you need

33
Function Loop example
  • lt
  • public void printRecord(int Number)
  • out.print(ltTRgt)
  • out.print(ltTDgtNumberlt/TDgt)
  • out.print(ltTDgt Numberlt/TDgt)
  • out.print(lt/TRgt)
  • gt
  • ltTABLE BORDER2gt
  • lt
  • for ( int i 0 i lt n i )
  • printRecord(i1)
  • gt
  • lt/TABLEgt

34
Functions
  • This doesnt look anymore like an HTML code.
  • What is the point of JSP then, is it to get messy
    code!!
  • So, sun devised a remedy for that and the final
    result looked really good, but not the
    development
  • The solution is called JSP Standard Tag Library
    or JSTL.
  • The last example will be written in one tag as
  • ltmylib for start1 end10/gt

35
JSTL
  • Next Lecture
Write a Comment
User Comments (0)
About PowerShow.com