# Presentation: 745823

## JSP - What is it Good For?

- GSFC Webmasters
- January 24, 2002
- Chris Durachka / Code 585
- cdurachk@pop500.gsfc.nasa.gov

## Agenda

- Overview of JSP
- JSP Architecture
- Providers of JSP Server Engines
- Who is Using JSP
- Compare JSP to Other Tools
- Pros and Cons of JSP
- Examples
- JAVABeans
- Links/Questions

## JSP Overview - History

- Earlier dynamic web pages were developed  with CGI
- Web Applications eventually outgrew CGI because of the following:
- Datasets became large
- Increased traffic on sites
- Trouble maintaining state and session information
- Performance bottlenecks
- Can involve proprietary APIs

## JSP Overview History (Cont’d)

- Microsoft Saves the Day?
- Active Server Pages (ASP) are released that are:
- Pre-coded server extensions
- Easily integrates with ODBC
- Gives developers simple server-side scripting to access the server
- Upside for Microsoft, downside for us, ASP is limited to only Microsoft platforms

## JSP Overview History (Cont’d)

- In response to ASP, Sun Microsystems gave the world Java Server Pages (JSP)
- Entirely based in Java Programming language
- JSP supports the same modularity, reusability, platform-independence, and access to Java APIs as Java
- Gives developers the advantages of developing in Java in a more relaxed script-like environment
- The biggest difference between ASP and JSP is the approach taken in the development efforts
- JSP is designed to be platform and server independent, created from a broader community of tool, server, and database vendors
- ASP relies primarily on Microsoft technologies

## JSP Overview - Software

- With a foundation in Java, JSP
- Threads incoming requests
- Supports the definition of tags that abstract functionality within a page in a library
- Interacts with a wide array of databases
- Serves dynamic content in a persistent and efficient manner
- Initially the server automatically separates HTML and JSP code, compiles the JSP code, and starts the servlet, from then on the servlets are stored in the web server’s memory in Java byte code
- Extends the same portability, large class library, object-oriented code methodology, and robust security measures that have made Java a top choice
- Does not require a Java programmer

## Architecture

## JSP Engine Open Source Providers(the short list)

- Acme -  Acme Utilities
- _[http://www.acme.com/java/software/](http://www.acme.com/java/software/)_
- Bit Mechanic -  GNU Server Pages
- _[http://www.bitmechanic.com/projects/gsp/](http://www.bitmechanic.com/projects/gsp/)_
- Evidian/Objectweb - JOnAS (ObjectWeb)
- _[http://www.objectweb.org/jonas/](http://www.objectweb.org/jonas/)_
- Caucho – Resin
- _[http://www.caucho.com/](http://www.caucho.com/)_

- Jakarta Apache –Tomcat v4
- _[http://jakarta.apache.org/tomcat/](http://jakarta.apache.org/tomcat/)_
- KLOMP.org - GNU JSP
- _[http://klomp.org/gnujsp/](http://klomp.org/gnujsp/)_
- Mort Bay – Jetty
- _[http://jetty.mortbay.com/jetty/](http://jetty.mortbay.com/jetty/)_
- Tagtraum -  jo! and JSPExecutor
- _[http://www.tagtraum.com/](http://www.tagtraum.com/)_
- W3.org -  Jigsaw
- http://www.w3.org/Jigsaw/

## Who is using JSP?(Customers of Caucho)

- altavista.com
- http://www.altavista.com
- half.com
- http://www.half.com
- E-Loan
- http://www.e-loan.com
- iWon
- http://www.iwon.com
- Jguru
- http://www.jguru.com
- State of Maine
- http://www.state.me.us

- petsmart.com
- http://www.petsmart.com
- ya.com
- http://www.ya.com
- BizRate
- http://www.bizrate.com
- salesforce.com
- http://www.salesforce.com
- listen.com
- http://www.listen.com
- State of Utah
-  http://www.state.ut.us

## Comparison of JSP to...

## Comparison of JSP to ... (Cont’d)

## Pros and Cons

- Pros
- Efficient
- Convenient
- Server engines typically have built-in infrastructures to handle parsing/decoding HTML form data, reading/setting HTTP headers, session tracking
- Powerful
- Java behind the scene
- Portable
- Write once, run anywhere
- Inexpensive
- Various free or inexpensive engines available

- Cons
- Need for a Server Engine
- Another engine to maintain
- Un-acceptably by the client machine
- Virtual hosting of unrelated sites on a single machine can cause problems (choose your server engine wisely)
- High Learning Curve
- Steeper learning curve than Cold Fusion

## Examples‘Hello World’

- <html>
- <!-JSP name: Hello.JSP**  **Written by Chris --
- <head>
- <title>Hello1.jsp</title>
- </head>
- <body>
- Hello World
- </body>
- </html>
**The browser displays: ‘Hello World’**

## Examples‘Rectangle Problem’

- <html>
- <!--- JSP name: area problem –
- <head>
- </head>
- <body>
- <% int height = 4, width = 7 ; %>
- <% //comment in JSP %>
- The area of the rectangle is <%= height * width %>
- </body>
- </html>
**The browser displays: 'The area of the rectangle is 28'.**** **
**Note: Java and JSP are very case sensitive**

## Examples‘Random Numbers’

- <html>
- <!--- JSP name: Random Numbers --- >
- <body><H1>Your Personal Random Numbers</h2>
- <P>Here are your personal random numbers:
- <OL>
- <%
- java.util.Random r = new java.util.Random(  );
- for (int i=0; i<5; i++) {
-        out.println("<LI>");
-        out.println(r.nextInt(  ));
- }
- %>
- </OL>
- </body></html>

## Examples‘Random Numbers’ (Cont’d)

- The browser displays:
- Your Personal Random Numbers
- Here are your personal random numbers:
-    1.524033632
-    2.-1510545386
-    3.1167840837
-    4.-850658191
-    5.-1203635778

## JSP and JavaBeans

- A JavaBean is a Java Class file that creates an object
- Defines how to create an Object, retrieve and set properties of the Object

**JSP**

**JavaBeans**

**Get Bean Value**

**Set Bean Value**

## JSP and JavaBeans (Cont’d)

- JavaBeans can store data
- JavaBeans can perform complex calculations
- JavaBeans can hold business logic
- JavaBeans can handle Database Connectivity and store data retrieved from them
- JavaBeans facilitate
- Reuse of code
- Debugging process
- Separating code from content

## Some Good Links

- Jguru.com
- _[http://www.jguru.com](http://www.jguru.com/)_ - main page has nice search of the FAQ, Forums, etc...
- _[http://www.jguru.com/faq/JSP](http://www.jguru.com/faq/JSP)_  their main JSP FAQ page
- Jspinsider.com
- _[http://www.jspinsider.com](http://www.jspinsider.com/)_ - articles, tutorials, links
- _[http://www.jspinsider.com/content/rcarnes/jspb_intro.view](http://www.jspinsider.com/content/rcarnes/jspb_intro.view)_ - on-line course/tutorial on JSP
- Other Tutorials
- _[http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/](http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/)_  basis of the book Core Servlets and JavaServer Pages (Sun Microsystems Press and Prentice Hall, May 2000) by Marty Hall
- Sun’s Java Site – JSP
- Forum active  _[http://forum.java.sun.com/forum.](http://forum.java.sun.com/forum.jsp?forum=45)__[jsp](http://forum.java.sun.com/forum.jsp?forum=45)__[?forum=45](http://forum.java.sun.com/forum.jsp?forum=45)_
- archive-http://archives.java.sun.com/archives/servlet-interest.html
- Sun’s Java Site – APIs
- Java Std Ed _[http://java.sun.com/j2se/1.3/docs/](http://java.sun.com/j2se/1.3/docs/api/index.html)__[api](http://java.sun.com/j2se/1.3/docs/api/index.html)__[/index.html](http://java.sun.com/j2se/1.3/docs/api/index.html)_  essential java
- Java Enterprise Edition _[http://java.sun.com/j2ee/j2sdkee/](http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html)__[techdocs](http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html)__[/](http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html)__[api](http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html)__[/index.html](http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html)_  enterprise-class server side applications

## Questions?