3. o "client - server"
• tiers communicate via network protocols
• e.g. using JDBC
• where client implements:
presentation,
business rules/logic
and data access logic
2 Tiered Applications
5. o in N-tier model
• presentation tier
• implemented on client device
• using content (e.g. HTML) provided by "application" server
• business tier
• creates presentation content
• implements business rules/logic on an "application" server
• data tier
• implements data access logic on the "application" server
• data stored on "database" server
• Notes:
• servers may be replicated for redundancy and load balancing
Multi-tiered - continued
6. Multi-tiered - continued
6
Application Server
Servlet Container
JDBC
HttpServletRequest
HttpServletResponse
void doGet( __ , __)
void doPost(__ , __)
HTML over HTTP
SQL over TCP
7. Servlet - lifecycle
o init() and destroy() from class HttpServlet
• init() method called when servlet first created
• not called again as long as the servlet is not destroyed.
• destroy() method is invoked once:
• all in service() method have exited
• or after timeout period
• releases container resources that were allocated.
o service()
• invoked each time server receives request for servlet.
• server spawns a new thread and invokes service().
7
8. Servlet lifecycle - continued
o more on service()
• based on request type, call appropriate method
• GET, POST requests go to: doGet(), doPost()
are the most common ones
• other request map the same way
• also provides default handlers
• so do not override service()
• override specific doXXX() method instead
8
9. Servlet lifecycle - continued
9
from Liang, Introduction to Java Programming, 12th ed
10. classes: HttpServletRequest &
HttpServletResponse
protected void doXXX(HttpServletRequest req,
HttpServletResponse resp)
• servlet obtains request from HTTPServletRequest
and creates response using HTTPServletResponse
• these 2 classes encapsulated request & response
• doXXX() methods throws following:
ServletException, java.io.IOException
10
11. HTML - document overview
<!DOCTYPE html>
• first line of HTML doc.
• Info about specific version can be added
o then 3 pairs of tags:
• first 3 tag-pairs: html, head & body
<html>
<head>
non-visible elements here
images, scripts & other items can be pre-loaded
</head>
<body>
(visible elements here)
</body>
</html>
11
12. Servlet – overview of coding
o create servlet by:
public class ___ extends HttpServlet
o then override specific doXXX() methods
• if using same code for doGet() and doPost()
• then have one call the other or
• have both call a common method
e.g. in NetBeans skeleton code both doGet() and
doPost() call processRequest()
12
13. Servlet coding - continued
13
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try ( PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
/* out.println() statements for head section */
out.println("</head>");
out.println("<body>");
/* more out.println() statements for body section */
out.println("</body>");
out.println("</html>");
}
}
14. Servlet - troubleshooting
o remember the browser caches results
• browser feature: reload without cache
o examine HTML source
• browser features: show source
o display details of response and/or request
• both classes have methods that get this info
• echo to Web page or to log file
14
15. Servlet troubleshooting – cont'd
o logging
void log(String msg)
void log(String msg, Throwable t)
• will write to the application server's log
• log location depends on implementation
• NetBeans shows server's log in window at bottom
• if date & time needed use:
DateTimeFormatter dtf =
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
log(dtf.format(LocalDateTime.now()) + " some_msg");
• or use logging framework like Apache Log4j
15
16. Servlet – class hierarchy
16
from Liang, Introduction to Java Programming, 12th ed