building web applications with servlets and...
TRANSCRIPT
![Page 1: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/1.jpg)
Building Web Applications with
Servlets and JavaServer Pages
David Janzen
Assistant Professor of Computer Science
Bethel College
North Newton, KS
http://www.bethelks.edu/djanzen
![Page 2: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/2.jpg)
Acknowledgments
• UML is a trademark of Object Management Group,
Inc. in the U.S. and other countries
• Rational software and courseware used with
permission by Rational Software Corp. and through
Rational’s SEED (Software Engineering for
Educational Development) program
– http://www.rational.com/corpinfo/college_relations/seed/
![Page 3: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/3.jpg)
Web Development Overview• static html
– text file containing html tags created manually
– may include some client-side scripts (e.g. JavaScript)
• dynamic html
– html file produced at time of request
– cgi, php, asp, jsp, Servlets
• active html
– html contains a program that runs at the client inside a
web browser
– Java applets
![Page 4: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/4.jpg)
Static HTML
web browser
web server
_____.htmlrequest URL
response HTML
![Page 5: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/5.jpg)
Dynamic HTML
web browser
web server
_____.html
request URL
response HTML_____.jsp
_____.class
application
DBMS
JDBC
RMISocketsCORBAEJB
![Page 6: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/6.jpg)
Active HTML
web browser
web server
_____.htmlrequest URL
response HTML_____.class
![Page 7: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/7.jpg)
Dynamic and
Active HTML
web browser
web server
_____.html
request URL
response HTML_____.jsp
_____.class
application
DBMS
JDBC
RMISocketsCORBAEJB
_____.class
![Page 8: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/8.jpg)
Java Confusion• Java Applications*
– stand-alone executable applications
• Java Applets*
– applications that run within a web-browser
• Java Servlets
– applications that run within a web-server
• JavaScript
– scripts that run within a web-browser
– not really Java at all
* available with original 1995 Java release
![Page 9: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/9.jpg)
Java Application
![Page 10: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/10.jpg)
Java Application
![Page 11: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/11.jpg)
Java Applet
![Page 12: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/12.jpg)
Java Applet
![Page 13: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/13.jpg)
JavaScript
![Page 14: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/14.jpg)
Introduction to Servlets• Servlets are Java programs that run inside a web
server.
• Servlets allow web servers to receive requests
from clients (normally entered in a form on a web
page).
• Servlets can perform server-side processing such
as interacting with a database or another
application
• Servlets can generate dynamic html based on
server-side processing and return this to the client.
![Page 15: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/15.jpg)
Servlet Howto• create an HTML file that invokes a servlet
(usually through the FORM ACTION=…)
• create a Java program that does the following:
– import javax.servlet.*;
– import javax.servlet.http.*;
– inherit from HttpServlet
– override the doGet and doPost methods
– write the response HTML file using a
java.io.Printwriter to the HTTP response
![Page 16: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/16.jpg)
Introduction to Servlets
• A Simple Example
– collect username and password
– reply with welcome page
• or Invalid Login if password is not “verysecret”
![Page 17: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/17.jpg)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>CCSC Tutorial Demo</TITLE>
</HEAD>
<BODY>
<FORM NAME="addUser" METHOD="POST"
ACTION = "/servlet/ccsc.LogonServlet">
<B>User Name: </B>
<INPUT NAME = "userName" TYPE = "TEXT"
MAXLENGTH = "25" SIZE = "15"> <br>
<B>Password: </B>
<INPUT NAME = "password" TYPE = "password"
VALUE = ”verysecret" MAXLENGTH = "25" SIZE = "15">
<br>
<B><INPUT NAME = "login" VALUE = "Login"
TYPE = "SUBMIT"></B>
</FORM>
<script language="JavaScript">
document.addUser.userName.focus()
</script>
</BODY>
</HTML>
![Page 18: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/18.jpg)
package ccsc; import javax.servlet.*;import javax.servlet.http.*;public class LogonServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {super.init(config);
}protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, java.io.IOException {response.setContentType("text/html");java.io.PrintWriter out = response.getWriter();String uName = request.getParameter("userName");String pWord = request.getParameter("password");if(pWord.equals("verysecret")) {
out.println("<html><head><title>CCSC Tutorial Demo Welcome</title></head>");out.println("<body><h3>Welcome " + uName + "!</h3></body></html>");
}else {
out.println("<html><head><title>CCSC Tutorial Demo Invalid Login</title></head>");out.println("<body><H3>Invalid Login</H3></body></html>");
}out.close();
} protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, java.io.IOException {processRequest(request, response);
}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, java.io.IOException {processRequest(request, response);
}}
![Page 19: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/19.jpg)
![Page 20: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/20.jpg)
JavaServer Pages
• JavaServer Pages provide a layer aboveServlets that allow you to mix HTML and calls to Java code in the web server.
• JavaServer Pages are actually converted into Servlets, but JSP’s are easier to work with for those familiar with HTML.
• Servlet’s usually create Java objects as Java Beans to simplify JSP access.
![Page 21: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/21.jpg)
Mixing JavaServer Pages
with Servlets
web browser
web server
invalidLogin.html
request URL
response HTMLwelcome.jsp
LogonServlet.class
![Page 22: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/22.jpg)
package ccsc;
import javax.servlet.*;
import javax.servlet.http.*;
public class LogonServlet extends HttpServlet {
...
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException {
response.setContentType("text/html");
String uName = request.getParameter("userName");
String pWord = request.getParameter("password");
HttpSession session = request.getSession(true);
if(pWord.equals("verysecret")) {
session.setAttribute("uName",uName);
gotoPage("/welcome.jsp",request,response);
}
else {
gotoPage("/invalidLogin.html",request,response);
}
}
private void gotoPage(String address, HttpServletRequest request,
HttpServletResponse response)
throws ServletException, java.io.IOException {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
dispatcher.forward(request, response);
}
...
![Page 23: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/23.jpg)
<%@page contentType="text/html"%>
<html>
<head><title>CCSC Tutorial Demo Welcome</title></head>
<body>
<h3>Welcome <%= session.getAttribute("uName")%>!</h3>
</body>
</html>
welcome.jsp
![Page 24: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/24.jpg)
![Page 25: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/25.jpg)
JSP Howto• Create a file with a .jsp extension
• include static HTML
• include JSP Scripting Elements– Expressions <%= expression %>
– Scriptlets <% code %>
– Declarations <%! Code %>
– Directives <%@ variable directive %>
– Comments <%-- JSP Comment -->
• Use pre-defined variables– request HttpServletRequest
– response HttpServletResponse
– session HttpSession
– out PrintWriter
![Page 26: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/26.jpg)
JSP Howto• Include another file
• Import from the Java library
• Declare and use a variable
• Access session and request information
<%@ include file="commontop.html" %>
<%@ page import="java.util.*" %>
<%! private int accessCount = 0 %>
<H2>Accesses to page since server reboot:
<%= ++accessCount %></H2>
<H2>Current time: <%= new java.util.Date() %></H2>
<H2>Remote Host: <%= request.getRemoteHost() %></H2>
<H2>Session ID: <%= session.getID() %></H2>
![Page 27: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/27.jpg)
JSP Howto• Assuming a Servlet has done the following:
• In the JSP, access a Java object in the server
Vehicle v = new Vehicle();
v.pic1Filename = “Honda1996.jpg”;
v.year = 1996;
session.setAttribute("vehDetail",v);
<jsp:useBean id="vehDetail” class = ”ccsc.Vehicle”
scope = "session"/>
<% out.println(“<H3>Year: “ + vehDetail.year + “</H3>”);
out.println("<IMG SRC=/jsp/dirs/vehiclePics/" +
vehDetail.pic1Filename +
" WIDTH=300 HEIGHT=180>");
%>
![Page 28: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/28.jpg)
Advantages of using Servlets and
JavaServer Pages
• Java is widely known
• Java has many applications
– from GUI’s to PDA’s to Applets to Servlets
• Java has a rich set of libraries
– threads
– networking (sockets, RMI, CORBA)
– database connectivity through JDBC
![Page 29: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/29.jpg)
Advantages of using Servlets and
JavaServer Pages• Java is free
– http://java.sun.com for Java SDK and J2EE
– http://jakarta.apache.org for Tomcat
• Java is portable
– runs on many OS’s and in many Servlet Engines
• Java is efficient
– multiple concurrent lightweight threads execute a
single set of code within the web server
• Java is secure
– memory restrictions (array out-of-bounds)
![Page 30: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/30.jpg)
Setting up the environment
• Many Servlet engines
– http://www.servlets.com/engines/index.html
• Tomcat on Apache on Linux
• Outsource it through web hosting
– (3tec.com $20 + $7x4months for a semester)
• Forte for Java has Tomcat built-in
– http://www.sun.com/forte/ffj/
![Page 31: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/31.jpg)
Setting up the environment• When using Tomcat (stand-alone or in FFJ)
– place .html and .jsp files in home dir
– place .class Servlet files in WEB-INF/classes
![Page 32: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/32.jpg)
Setting up the environment
• Tips to avoid Pitfalls
– in Forte for Java
• add all files through Template Wizard (File->New)
• set External Browser through Tools->Options
![Page 33: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/33.jpg)
Setting up the environment• Tips to avoid Pitfalls
– in Forte for Java
• Execute web page, don’t run it
![Page 34: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/34.jpg)
Sample Web Application
• SeaGypsy Hotel Reservation System
– Created by Junior/Senior level students
– CSC361 Software Design and Development
– January 2001
![Page 35: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/35.jpg)
![Page 36: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/36.jpg)
![Page 37: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/37.jpg)
![Page 38: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/38.jpg)
![Page 39: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/39.jpg)
![Page 40: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/40.jpg)
UML Class Diagram
CustInfoServlet
doPost()
gotoPage()
ReservationRequest
lastName
firstName
address
phone
cardNum
expDate
numGuests
numPets
inDay
inMonth
inYearoutDay
outMonth
outYear
price
roomType
roomNum
getLastName()
getFirstName()
setLastName()
setFirstName()
getPIn()
getPOut()
ResServlet
m_ResM
init()
doPost()
gotoPage()
isValidStrings()
isValidDates()
ResMan
ourDB
connect()
checkDateAvailable()
InsertTraveler()
CalculateCost()
ResvBean
result
ResvBean()
getResult()
setResult()
ManagerServlet
doPost()
gotoPage()
Manager.java
m_db
Manager()
GetData()
findReservat ions()processResult()
DataBaseProxy
con
stmt
connect()
query()
insert()
Delete()
update()
disconnect()
Servlet
![Page 41: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/41.jpg)
UML Database Schema
rateCode
rateTypedescription
roomCode
roomType
description
rates
roomType
rateType
rate
traveler
lastName
firstName
phone
address
travelerId
rooms
roomNumber
roomType
paymentCode
paymentType
description
reservat ions
roomNumber
checkIn
checkOut
travelerId
numGuests
numPets
paid
payment
cardNumber
expDate
![Page 42: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/42.jpg)
UML Sequence Diagram : Traveler
: ResMan : ResServlet :
DataBaseProxy
: InfoReserve : Session :
ReservationRequest
init( )
doPost( )
new( )
new( )
setInDay( )
setInMonth( )
setOutDay( )
setOutMonth( )
setAt tribute( )
checkDateAvailable( )
gotoPage( /seagypsy/infoReserve.jsp)useBean( )
getProperty( )
connect( )
query( )
![Page 43: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/43.jpg)
Design Issues
• Good software design separates the
presentation from the business logic from
the data model.
• Model/View/Controller, Mediator, and
Façade design patterns can be used to
improve maintainability and distribution of
tasks
![Page 44: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/44.jpg)
Design Issues
• Web applications are often developed in a
group whose members have a combination
of skills
– System Administrator (Unix, Apache, Tomcat)
– Web Developer (HTML, Graphics Design)
– Software Developer (Java)
![Page 45: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/45.jpg)
Design Issues• Object-Oriented approach facilitates reuse,
encapsulation, distribution of responsibilities.
• Presentation layer (view) can primarily be
restricted to JSP.
• Business logic (controller) can primarily be
restricted to Java using Servlets.
• Data model (model) may be split between DB
and Java.
– Domain model objects don’t care if they are being
used in a web application or a stand-alone
application.
![Page 46: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/46.jpg)
Web Application Patterns• Action Controller
– Each web page has a controller object that knows
which model and view to use
• Front Controller
– A single object handles incoming requests and
passes them to other objects
Action Controller
handle http requests
determine which model and view to use
Model
domain logic
View
display HTML
Handler
doGetdoPost
Command
process()
Command1 Command2
: Handler
: Command1
examine URL( )
new( )
process( )
![Page 47: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/47.jpg)
Web Application Patterns• Data Mapper
– Each Domain Object has a Mapper object that
knows how to store and retrieve it from the DB
• See more at:
– http://martinfowler.com/isa/
• For a framework that contains many patterns:
– See Expresso at http://www.jcorporate.com/
ReservationReservation
Mapper
Database
![Page 48: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/48.jpg)
Use in curriculum
• Software Design and Development
• Networks
– Web Application becomes client of a C++ server
• Senior Seminars
– On-line newspaper
– Course Evaluation system
![Page 49: Building Web Applications with Servlets and …users.csc.calpoly.edu/~djanzen/pubs/pdfs/CCSC02Tutorial.pdfServlets that allow you to mix HTML and calls to Java code in the web server](https://reader034.vdocuments.us/reader034/viewer/2022042120/5e9a97fa23ab6d12036ddfb9/html5/thumbnails/49.jpg)
Resources• Core Servlets and JavaServer Pages
– by Marty Hall
• Core Web Programming
– by Marty Hall and Larry Brown
• http://java.sun.com
• http://java.sun.com/webservices/docs/ea2/tu
torial/index.html
• http://www.wantjava.com/resources.jsp
• http://www.servlets.com
• http://jakarta.apache.org