Upload
brianna-strickland
View
215
Download
1
Embed Size (px)
Citation preview
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/
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.
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.
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
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>
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
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.)
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
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) %>
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.
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
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>
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
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
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
– . . .
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