16
3/6/00 jsp00 http://www.npac. syr.edu njm@np ac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University 111 College Place, Syracuse, NY 13244 http://www.npac.syr.edu/

3/6/00jsp00 [email protected] 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

Embed Size (px)

Citation preview

Page 1: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

1

Java Server Pages

Nancy McCracken

Northeast Parallel Architectures Center at Syracuse University

111 College Place, Syracuse, NY 13244

http://www.npac.syr.edu/

Page 2: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

2

Abstract• Java Server Pages allow special tags and java code to be

embedded in HTML files. These tags and code are processed by the web server to obtain a dynamically-produced HTML page to the browser.

– another architecture in the web-based distributed application arsenal.

– produce dynamic web pages on the server side (as do servlets), but separate application logic from the appearance of the page.

– the tags allow previously compiled java code, in the form of JavaBeans, to be used

– allows fast development and testing.

– may also produce XML documents, instead of HTML.

Page 3: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

3

Development of JSP• Java Server Pages were developed as a response to

Microsoft’s Active Server Pages (ASP). The main differences are that ASP only runs on Microsoft IIS and Personal Web Servers, and JSP has user-defined tags.

• Development dates: (Note that JSP is built on top of servlets)

– Servlet 2.1 Jan. 99

– JSP 1.0 June 99

– Source code released to Apache to develop Tomcat server November 99

– Servlet 2.2 and JSP 1.1 (J2EE1.2) December 99

– Look for further development of tag library in 00.

Page 4: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

4

JSP elements• A JSP page looks like a standard HTML or XML page with

additional elements processed by the JSP engine. Typically, these elements create text that is inserted into the resulting document.

• JSP elements

– JSP directive passes information to the JSP engine, enclosed in <%@ and %> markers.

– JSP actions or tags are a set of customized XML-style tags for particular actions, e.g. jsp:useBean instantiates the JavaBean class on the server.

– Expression: anything between <%= and %> markers is evaluated by the JSP engine as a Java expression in the server environment.

– Scriptlet: a small script in Java to perform other functions

– Implicit Objects: servlet abstractions

Page 5: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

5

Example JSP page• This page prints the day of the month and year, and either

“Good Morning” or Good Afternoon”, depending on the time.<HTML><%@ page language=“java” imports=“com.wombat.JSP.*” %><H1>Welcome</H1><P>Today is </P><jsp:useBean id=“clock” class=“calendar.jspCalendar” /><UL> <LI>Day: <%= clock.getDayOfMonth( ) %> <LI>Month: <%= clock.getYear( ) %></UL><% if (Calendar.getInstance( ).get(Calendar.AM_PM) == Calendar.AM) { %> Good Morning <% } else { %> Good Afternoon <% } %><%@ include file = “copyright.html” %></HTML>

Page 6: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

6

Architecture

http request

http response

web server

jsp page

JSP engine compiles to

a servlet

URL

request

JavaBeanLibrary

DB

properties,call methods

http page

response

browser

Page 7: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

7

JSP Directives• page directives communicate page-specific information to the

JSP engine, such as buffer or thread information or specify an error page.

• language directives specify script language + possible extensions

• include directive includes an external document in the page. These are often company information files or copyright files, but can also be jsp files.

• taglib directive indicates a library of custom tags that the page can invoke.

• (see helloworld.jsp example.)

Page 8: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

8

JSP Tags• There are a set of core JSP1.0 tags that implement JSP-

technology specific operations. Additional standard tags are planned, and the user can design their own custom tags.– jsp:useBean - declares the usage of an instance of a JavaBeans

component. If it does not already exist, then the instance is created and registered in the servlet environment. Several properties can be set; notably that the state of the bean is saved for the session or just the page..

– jsp:setProperty - this tag can be used to set all the properties of a Bean from the request parameter stream with parameters of the same name, or can be used to set individual properties.

– jsp:getProperty - gets the property of the Bean, converts it to a String, and puts it into the implicit object “out”.

– jsp:forward - forwards the request to another jsp page or servlet.

– jsp:include - include another jsp page

– jsp:plugin - load into the specified plug-in of the browser

Page 9: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

9

Scriptlets• JSP pages can include small scripts in a page. These are code

fragments that are executed at request time processing.

• May be combined with static elements on the page or other objects in the Java servlet environment.

• Anything contained with <% and %> or <%! and %> is evaluated by the script language engine, normally the Java virtual machine on the host.

• Declarations: the scope is the JSP file, including the include files. Declare variables or methods.

– <%! int a, b; double c = 0.0; %>

– <%! Color c = new Color ( 0, 128, 255); %>

• Expressions: any language expression, casts result to a String

– <%= Math.sqrt(2) %>

Page 10: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

10

More on Scriptlets• Note that expressions never have semicolons.

• Scriplets within <% and %> can have declarations, expressions, or any other kind of code fragment.

– <% String name = null; if ( request.getParameter(“name”) == null) { %>

– you can use any of the JSP implicit objects or classes imported by the page directive, declared in a declaration, or named in a <jsp:useBean> tag.

Page 11: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

11

Processing HTML Forms by Servlets• In the form tag on the HTML page, you can put the action field to

be a JSP page.• This is compiled to be a servlet and the request and response

parameters can be explicitly used in a scriptlet on the page. request.getParameter (“username”);where username is the name of a field on the form.

• The request object implements javax.servlet.HttpServletRequest and has the following methods, among others:– getRequest– getParameterNames– getParameterValues– getParameter

Page 12: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

12

Processing HTML Forms by JavaBeans• If using a Bean to process the form data, no action tag is necessary

on the form.

• Give form element names that correspond to properties in the bean (exactly, respecting upper and lower case).

• First give the useBean tag to instantiate the Bean.• Then give the setProperty tag either to set all properties, if all form

elements names are included in the bean’s properties, or to set individual ones. <jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/> <jsp:setProperty name="numguess" property="*"/>

• Similarly, you can retrieve data from a bean property and use it in the resulting html page:<H1> Hello <jsp:getProperty name=“mybean” property=“username”/>! </H1>

Page 13: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

13

Using with XML

• JSP pages can be used to generate XML pages.

• The JSP specification provides a way for XML tools to author and manipulate JSP pages, by converting JSP tags to their XML equivalents.

– add a JSP root element to the document

– convert elements and directives to their XML equivalent, e.g. instead of <% and %> scriptlet markers, use <jsp:scriptlet> and </jsp:scriptlet> XML tags.

– create CDATA elements for all other (typically non-JSP) elements on the page

Page 14: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

14

Industry Support• Servers: Apache, iPlanet Web, IBM WebSphere, BEA

WEbLogic, Inprise Application Server, ATG DYnamo, Acme, Bluestone, Gemstone, Oracle

• Tools: Forte SynerJ, Oracle Jdeveloper, Inprise Jbuilder, Macromedia Drumbeat 2000, NetObjects Fusion, Symantic Visual Café, . . .

• Engines:

– ServletExec for IIS, Netscape, all MacOS servers

– JRun for IIS, Netscape, Apache, WebSite Pro, WebSTAR

– WAICoolRunner for Netscape

– Caucho Resin for Apache, IIS

Page 15: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

15

Community Process• Java Community has put out Java Specification Request (JSR)

for next version “Dot.next” JSP and Servlets, Standard Tag Library.

• Drafts will be posted for review at all levels: expert, participant, public

• Goals include support for

– application events

– improved debugging and tool support

– improved XML support

– improved JSP authoring support

– better composition of components

– . . .

Page 16: 3/6/00jsp00  njm@npac.syr.edu 1 Java Server Pages Nancy McCracken Northeast Parallel Architectures Center at Syracuse University

3/6/00 jsp00 http://www.npac.syr.edu [email protected]

16

JSP Resources• Sun: java.sun.com/products/jsp

– links for downloads, tutorials, white paper, etc.

– join community process

– JSP syntax card

• Apache:

– download apache web server: www.apache.org

– Jakarta project for Java-based web servers, including an apache module for JSP and servlets: jakarta.apache.org