javaserver pages (jsp) introduction - hans bergsten
TRANSCRIPT
![Page 1: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/1.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 1
JavaServer Pages (JSP)Introduction
Georgia Web DevelopersConference, July 25, 2001
![Page 2: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/2.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 2
Who I Am
• Hans Bergsten– [email protected]
– President of Gefion software
– Member of the JSP working group (JCP)
– Author of JavaServer Pages (O’Reilly)
![Page 3: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/3.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 3
Overview
• JSP Background• Processing and Basic JSP 1.1 Elements• Extension Framework/Custom Tags• Flow Control and Scopes• Java 2 Enterprise Edition (J2EE)• Future Direction
![Page 4: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/4.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 4
Background
• Servlets part of JavaWebServer, 1997• Formalized as Servlet 2.1, Nov. 1998
![Page 5: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/5.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 5
Code and HTML Mixed
public void doGet(…) { ResultSet rs = getCustomers(“VIP”); out.println(“<ul>”); while (rs.next()) { out.println(“<li>” + rs.getString(“Name”); }
![Page 6: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/6.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 6
Background
• Servlets part of JavaWebServer, 1997• Formalized as Servlet 2.1, Nov. 1998• JHTML, HTML with Java code snippets• JSP 1.0, June 1999• JSP 1.1, December 1999
![Page 7: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/7.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 7
Code and HTML Separated
<foo:getVIPCust id=“vips” /><ul><foo:loop name=“vips” loopId=“cust” > <li> <jsp:getProperty name=“cust” property=“name” /></foo:loop>
![Page 8: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/8.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 8
JSP Elements
• Directives: <%@ dirname attr=value %>• Actions: <pref:name attr=value … />• Scripting:
– Scriptlet: <% scripting code %>
– Expression: <%= expression %>
– Declaration: <%! declaration %>
![Page 9: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/9.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 9
JSP Page Example
<%@ page contentType=“text/html” %><%@ include file=“header.jsp” %><h1>Hello World!</h1> <jsp:useBean id=“date” class=“java.util.Date” /> It’s <%= date %><%@ include file=“footer.jsp” %>
![Page 10: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/10.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 10
JSP Processinghello.jsp
hello.java
hello.class
request
response
read
generate
execute compile
Web Server/Web Container
![Page 11: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/11.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 11
JSP Elements Example
![Page 12: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/12.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 12
Directive Elements
• page: Page-dependent attributes– contentType, errorPage, buffer
• include: Include another source file• taglib: Tag library declaration
![Page 13: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/13.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 13
Directives Example
<%@ page contentType=“text/html” %><%@ include file=“header.jsp” %><h1>Hello World!</h1> <jsp:useBean id=“date” class=“java.util.Date()” /> It’s <%= date %><%@ include file=“footer.jsp” %>
![Page 14: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/14.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 14
Action Elements
• useBean: Declare a bean• getProperty: Add property value to page• setProperty: Set property value• include: Include response from page• forward: Continue processing at page• plugin: Add HTML for Java Plugin
![Page 15: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/15.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 15
JavaBeans Model
• A “thing” with public properties• A JavaBeans component is a regular
Java class• Naming conventions for property access
methods
![Page 16: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/16.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 16
JavaBeans Class Example
public class UserInfoBean { private String firstName; public void setFirstName(String fName) { firstName = fName; } public String getFirstName() { return firstName; }}
![Page 17: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/17.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 17
useBean Example
<jsp:useBean id=“user” class=“com.foo.UserInfoBean” />
![Page 18: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/18.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 18
setProperty Example
<jsp:setProperty name=“user” property=“firstName” value=“Hans” /><jsp:setProperty name=“user” property=“*” /><jsp:setProperty name=“user” property=“firstName” param=“fName” />
![Page 19: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/19.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 19
getProperty Example
<jsp:getProperty name=“user” property=“firstName” />
![Page 20: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/20.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 20
Using Actions and a Bean forInput Validation
<jsp:useBean id=“user” class=“com.foo.UserInfoBean” /><jsp:setProperty name=“user” property=“*” />Valid input?<jsp:getProperty name=“user” property=“valid” />
![Page 21: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/21.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 21
include Example
<jsp:include page=“foo.jsp” flush=“true”> <jsp:param name=“user” value=“Bob” /></jsp:include>
![Page 22: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/22.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 22
Reusing Page Fragments
![Page 23: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/23.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 23
Directive vs. Action
• Directive– In the translation phase
– File merged into including page
• Action– In the request phase
– Response added to including page’sresponse
![Page 24: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/24.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 24
Using the Directive and theAction
<%@ include file=“header.jsp” %><jsp:useBean id=“user” class=“…” /><jsp:include page=“portfolio.jsp” flush=“true”> <jsp:param name=“user” value=“<%= user.getID() %>” /></jsp:include>
![Page 25: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/25.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 25
Scripting Elements
• Scriptlet: <% scripting code %>• Expression: <%= expression %>• Declaration: <%! declaration %>
![Page 26: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/26.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 26
Scriptlet Example
<% if (user.isValid()) { %> Do something<% } else { %> Do something else<% } %>
![Page 27: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/27.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 27
Expression Example
First Name: <%= user.getFirstName() %>
1 + 1 = <%= 1 + 1 %>
![Page 28: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/28.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 28
Declaration Example
<%! int pageCounter = 0; %><% int requestCounter = 0; %><h1>Counters</h1>Instance variable counter:<%= pageCounter++ %>Local variable counter:<%= requestCounter++ %>
![Page 29: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/29.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 29
Implicit Scripting Variables
• request• response• session• application• pageContext• and more
![Page 30: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/30.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 30
Accessing Request Data
Method: <%= request.getMethod() %>URI: <%= request.getRequestURI() %>Server:<%= request.getServerName() %>Client: <%= request.getRemoteHost() %>Browser:<%=request.getHeader(“User-Agent”)%>
![Page 31: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/31.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 31
Accessing Request Data
![Page 32: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/32.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 32
Setting Response Data
<% Cookie c = new Cookie(“foo”, “bar”); c.setMaxAge(2592000); // Seconds response.addCookie(c);%>
![Page 33: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/33.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 33
Custom Actions
• Used the same as standard actions• Regular Java classes; JavaBeans with
a few extra methods• Invoked automatically by the container• Access to request and application data• Reduces the need for scripting code!
![Page 34: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/34.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 34
Custom Actions Example
<%@ taglib uri=“/foolib” prefix=“foo” %>
<foo:ifEq name=“user” property=“valid” value=“true”> <foo:save name=“user” /></foo:ifEq>
![Page 35: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/35.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 35
Custom Action Example
<%@ taglib uri=“/foolib” prefix=“foo” %>
<foo:setCookie name=“foo” value=“bar” maxAge=“2592000” />
![Page 36: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/36.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 36
MVC Pattern
• Model: business data and logic• View: user’s view of business data• Controller: user interaction
![Page 37: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/37.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 37
MVC Pattern for Web Apps
• Model: JavaBeans• View: JSP page• Controller: JSP page or servlet
![Page 38: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/38.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 38
MVC for Web Apps
input.jsp process.jsp confirm.jsp
UserInfoBean
View Controller
Model
View
![Page 39: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/39.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 39
Page Flow Control
input.jsp process.jsp confirm.jsp
UserInfoBean
forward forward
![Page 40: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/40.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 40
forward Example
<%@ taglib uri=“/foolib” prefix=“foo” %>
<foo:ifEq name=“user” property=“valid” value=“true”> <foo:save name=“user” /> <jsp:forward page=“confirm.jsp” /></foo:ifEq>
![Page 41: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/41.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 41
JSP Data Scopes
input.jsp process.jsp confirm.jsp
Page scope
Request scope
Session scope (one user)/Application scope (all users)
Page scope Page scope
![Page 42: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/42.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 42
Saving Data in a Scope
<useBean id=“user” class=“...” scope=“request” />Or with a scriptlet:<% UserInfoBean u = new UserInfoBean(); request.setAttribute(“user”, u);%>
![Page 43: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/43.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 43
Request Scope
input.jsp process.jsp confirm.jsp
JavaBeans
Request scope
![Page 44: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/44.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 44
Session scope
prodlist.jsp addtocart.jsp cartcontents.jsp
CartBean
Session scope
![Page 45: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/45.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 45
Application scope
prodlist.jsp addtocart.jsp cartcontents.jsp
CartBeanSession scope
ProdBeans
Application scope
![Page 46: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/46.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 46
Web Container
Java 2 Enterprise Edition(J2EE)
Application
Browser
EJB Container
DatabaseServlet
JSP
EJB
JSP
EJB
JDBCJTA/JTS
JMSJNDIXML
Client Tier Middle Tier EIS Tier
![Page 47: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/47.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 47
J2EE Application Example
htmlview.jspServlet
wmlview.jsp
EJB EJBIIOP/RMI
HTTP
WAP Database
![Page 48: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/48.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 48
Future Direction
• JSP 1.2/Servlet 2.3– include without flush
– Listeners
– Filters
– Custom tag development enhancements
• JSP Standard Tag Library (JSPTL)– Conditionals, Iterators, XML/XSLT,
Database access, etc.
![Page 49: JavaServer Pages (JSP) Introduction - Hans Bergsten](https://reader031.vdocuments.site/reader031/viewer/2022021009/6203ac97da24ad121e4c25a8/html5/thumbnails/49.jpg)
2001-07-25 GWDC: JavaServer Pages (JSP) Introduction 49
More Info
• JSP Specificationhttp://java.sun.com/products/jsp/
• JavaServer Pages bookhttp://TheJSPBook.com/
• Jakarta Tomcat, Taglibs & Strutshttp://jakarta.apache.org/
• InstantOnline Basichttp://www.gefionsoftware.com/InstantOnline/