Principles and Techniques of DBMS 5 Servlet

Similar documents
Managing Data on the World Wide-Web

Java EE Introduction, Content. Component Architecture: Why and How Java EE: Enterprise Java

Java Servlet Tutorial. Java Servlet Tutorial

ACM Crossroads Student Magazine The ACM's First Electronic Publication

Ch-03 Web Applications

Java Servlet 3.0. Rajiv Mordani Spec Lead

Implementing the Shop with EJB

PA165 - Lab session - Web Presentation Layer

2.8. Session management

Servlets. Based on Notes by Dave Hollinger & Ethan Cerami Also, the Online Java Tutorial by Sun

Servlet 3.0. Alexis Moussine-Pouchkine. mercredi 13 avril 2011

Arjun V. Bala Page 20

Creating Java EE Applications and Servlets with IntelliJ IDEA

Web Container Components Servlet JSP Tag Libraries

JSP. Common patterns

Introduction to J2EE Web Technologies

An introduction to web programming with Java

2. Follow the installation directions and install the server on ccc

CHAPTER 9: SERVLET AND JSP FILTERS

Servlet and JSP Filters

Piotr Nowicki's Homepage. Java EE 6 SCWCD Mock Exam. "Simplicity is the ultimate sophistication." Important!

Tutorial c-treeace Web Service Using Java

Web Application Programmer's Guide

Pure server-side Web Applications with Java, JSP. Application Servers: the Essential Tool of Server-Side Programming. Install and Check Tomcat

Java and Web. WebWork

Controlling Web Application Behavior

11.1 Web Server Operation

SSC - Web applications and development Introduction and Java Servlet (II)

CONTROLLING WEB APPLICATION BEHAVIOR WITH

How to program Java Card3.0 platforms?

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

INTRODUCTION TO WEB TECHNOLOGY

In this chapter the concept of Servlets, not the entire Servlet specification, is

Web Development in Java Live Demonstrations (Live demonstrations done using Eclipse for Java EE 4.3 and WildFly 8)

CSc31800: Internet Programming, CS-CCNY, Spring 2004 Jinzhong Niu May 9, Java Servlets

Supplement IV.E: Tutorial for Tomcat. For Introduction to Java Programming By Y. Daniel Liang

Java Server Pages combined with servlets in action. Generals. Java Servlets

Database Applications Recitation 10. Project 3: CMUQFlix CMUQ s Movies Recommendation System

Developing an EJB3 Application. on WebSphere 6.1. using RAD 7.5

CS506 Web Design and Development Solved Online Quiz No. 01

Session Tracking Customized Java EE Training:

Class Focus: Web Applications that provide Dynamic Content

Java EE 6 New features in practice Part 3

Java Technologies. Lecture X. Valdas Rapševičius. Vilnius University Faculty of Mathematics and Informatics

Java Servlet Specification Version 2.3

chapter 3Chapter 3 Advanced Servlet Techniques Servlets and Web Sessions Store Information in a Session In This Chapter

7 Web Databases. Access to Web Databases: Servlets, Applets. Java Server Pages PHP, PEAR. Languages: Java, PHP, Python,...

CHAPTER 5. Java Servlets

Manual. Programmer's Guide for Java API

Java Web Programming. Student Workbook

Liferay Enterprise ecommerce. Adding ecommerce functionality to Liferay Reading Time: 10 minutes

Penetration from application down to OS

Building Web Applications with Servlets and JavaServer Pages

J2EE Web Development. Agenda. Application servers. What is J2EE? Main component types Application Scenarios J2EE APIs and Services.

How to use JavaMail to send

Building a Multi-Threaded Web Server

BAPI. Business Application Programming Interface. Compiled by Y R Nagesh 1

Università degli Studi di Napoli Federico II. Corsi di Laurea Specialistica in Ingegneria Informatica ed Ingegneria delle Telecomunicazioni

Web Applications. For live Java training, please see training courses at

White Paper March 1, Integrating AR System with Single Sign-On (SSO) authentication systems

Java 2 Web Developer Certification Study Guide Natalie Levi

Automatic generation of distributed dynamic applications in a thin client environment

WebSphere and Message Driven Beans

Introduction to Web Technologies

Virtual Open-Source Labs for Web Security Education

Handling the Client Request: Form Data

}w!"#$%&'()+,-./012345<ya

Configure a SOAScheduler for a composite in SOA Suite 11g. By Robert Baumgartner, Senior Solution Architect ORACLE

Outline. Lecture 9: Java Servlet and JSP. Servlet API. HTTP Servlet Basics

Application Security

Szervletek. ANTAL Margit. Sapientia - EMTE, Pannon Forrás,,Egységes erdélyi felnőttképzés a

INSIDE SERVLETS. Server-Side Programming for the Java Platform. An Imprint of Addison Wesley Longman, Inc.

Aspects of using Hibernate with CaptainCasa Enterprise Client

Get Success in Passing Your Certification Exam at first attempt!

Java Servlet Specification Version 2.5 MR6

Outline. CS 112 Introduction to Programming. Recap: HTML/CSS/Javascript. Admin. Outline

Glassfish, JAVA EE, Servlets, JSP, EJB

Model-View-Controller. and. Struts 2

Building Java Servlets with Oracle JDeveloper

No no-argument constructor. No default constructor found

Exam Prep. Sun Certified Web Component Developer (SCWCD) for J2EE Platform

The Server.xml File. Containers APPENDIX A. The Server Container

Course Name: Course in JSP Course Code: P5

Oracle Hyperion Financial Management Custom Pages Development Guide

CS108, Stanford Handout #33 Young. HW5 Web

Essentials of the Java(TM) Programming Language, Part 1

Agenda. Summary of Previous Session. Application Servers G Session 3 - Main Theme Page-Based Application Servers (Part II)

Please send your comments to:

COMP9321 Web Applications Engineering: Java Servlets

Web Applications and Struts 2

Course Number: IAC-SOFT-WDAD Web Design and Application Development

Web Frameworks and WebWork

Transcription:

Principles and Techniques of DBMS 5 Servlet Haopeng Chen REliable, INtelligentand Scalable Systems Group (REINS) Shanghai Jiao Tong University Shanghai, China http://reins.se.sjtu.edu.cn/~chenhp e- mail: chen- hp@sjtu.edu.cn

Overview Servlet What is Servlet Servlet API Examples Web Application Structure 2

What is servlet? A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed by means of a request- response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by web servers. For such applications, Java Servlet technology defines HTTP- specific servlet classes. The javax.servlet and javax.servlet.http packages provide interfaces and classes for writing servlets. All servlets must implement the Servlet interface, which defines lifecycle methods. When implementing a generic service, you can use or extend the GenericServlet class provided with the Java Servlet API. The HttpServletclass provides methods, such as doget and dopost, for handling HTTP- specific services. 3

Servlet Container Container types 4

An Example The following is a typical sequence of events: 1. A client (e.g., a Web browser) accesses a Web server and makes an HTTP request. 2. The request is received by the Web server and handed off to the servlet container. The servlet container can be running in the same process as the host Web server, in a different process on the same host, or on a different host from the Web server for which it processes requests. 3. The servlet container determines which servlet to invoke based on the configuration of its servlets, and calls it with objects representing the request and response. 4. The servlet uses the request object to find out who the remote user is, what HTTP POST parameters may have been sent as part of this request, and other relevant data. The servlet performs whatever logic it was programmed with, and generates data to send back to the client. It sends this data back to the client via the response object. 5. Once the servlet has finished processing the request, the servlet container ensures that the response is properly flushed, and returns control back to the host Web server. 5

Servlet Lifecycle The lifecycle of a servlet is controlled by the container in which the servlet has been deployed. When a request is mapped to a servlet, the container performs the following steps. 1. If an instance of the servlet does not exist, the web container Loads the servlet class. Creates an instance of the servlet class. Initializes the servlet instance by calling the init method. 2. Invokes the service method, passing request and response objects. If it needs to remove the servlet, the container finalizes the servlet by calling the servlet's destroy method. 6

Creating a Servlet Use the @WebServlet annotation to define a servlet component in a web application. The annotated servlet must specify at least one URL pattern. This is done by using the urlpatternsor valueattribute on the annotation. import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; @WebServlet("/report") public class MoodServlet extends HttpServlet {... The web container initializes a servlet after loading and instantiating the servlet class and before delivering requests from clients. 7

The Servlet Interface The Servlet interface is the central abstraction of the Java Servlet API. All servlets implement this interface either directly, or more commonly, by extending a class that implements the interface. The two classes in the Java Servlet API that implement the Servlet interface are GenericServlet and HttpServlet. For most purposes, Developers will extend HttpServlet to implement their servlets. 8

HTTP Specific Request Handling Methods HttpServlet class has methods to aid in processing HTTP- based requests: doget for handling HTTP GET requests dopost for handling HTTP POST requests doput for handling HTTP PUT requests dodelete for handling HTTP DELETE requests dohead for handling HTTP HEAD requests dooptionsfor handling HTTP OPTIONS requests dotracefor handling HTTP TRACE requests Typically when developing HTTP- based servlets, a Servlet Developer will only concern himself with the doget and dopost methods. 9

An Example: mood @WebServlet("/report") public class MoodServlet extends HttpServlet { protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype(" text/html;charset=utf- 8"); PrintWriter out = response.getwriter(); try { out.println("<html lang=\"en\">"); out.println("<head>"); out.println(" <title>servlet MoodServlet</ title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>servlet MoodServlet at + request.getcontextpath() + "</h1>"); request.setattribute("mood", "sleep"); String mood = (String) request.getattribute(" mood"); out.println(" <p>duke' s mood is: " + mood + "</p>"); if (mood.equals("sleepy")) { out.println("<img src=\"resources/images/duke.snooze.gif\" alt=\"duke sleeping\"/><br/>"); else{ out.println("</body>"); out.println("</html>"); finally { out.close(); 10

An Example: mood @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf- 8"); processrequest(request, response); @Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); 11

An Example: mood The generated html page: <html lang="en"> <head> <title>servlet MoodServlet</title> </head> <body> <h1>servlet MoodServlet at /ServletMood</h1> <p>duke's mood is: sleepy</p> <img src="resources/images/duke.snooze.gif" alt="duke sleeping"/><br/> </body> </html> 12

An Example: mood 13

Filtering Requests and Responses A filter is an object that can transform the header and content (or both) of a request or response. Filters differ from web components in that filters usually do not themselves create a response. Instead, a filter provides functionality that can be "attached" to any kind of web resource. Consequently, a filter should not have any dependencies on a web resource for which it is acting as a filter; this way, it can be composed with more than one type of web resource. The main tasks that a filter can perform are as follows: Query the request and act accordingly. Block the request- and- response pair from passing any further. Modify the request headers and data. You do this by providing a customized version of the request. Modify the response headers and data. You do this by providing a customized version of the response. Interact with external resources. 14

Programming Filters You define a filter by implementing the Filter interface. import javax.servlet.filter; import javax.servlet.annotation.webfilter; import javax.servlet.annotation.webinitparam; @WebFilter(filterName = "TimeOfDayFilter", urlpatterns = {"/*", initparams = { @WebInitParam(name = "mood", value = "awake") ) public class TimeOfDayFilter implements Filter {... 15

Programming Filters public class TimeOfDayFilter implements Filter { String mood = null; @Override public void init(filterconfig filterconfig) throws ServletException { mood = filterconfig.getinitparameter("mood"); @Override public void dofilter(servletrequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { Calendar cal = GregorianCalendar.getInstance(); switch (cal.get(calendar.hour_of_day)) { case 23:case 24:case 1:case 2:case 3:case 4:case 5:case 6: mood = "sleepy"; break; req.setattribute("mood", mood); chain.dofilter(req, res); @Override public void destroy() { 16

An Example: mood 17

Filter-to-Servlet Mapping 18

Handling Servlet Lifecycle Events Object Event Listener Interface and Event Web context Initialization and destruction Web context Attribute added, removed, or replaced Session Creation, invalidation, activation, passivation, and timeout Session Attribute added, removed, or replaced Request A servlet request has started being processed by web components Request Attribute added, removed, or replaced javax.servlet.servletcontextlistener and ServletContextEvent javax.servlet.servletcontextattributelistener and ServletContextAttributeEvent javax.servlet.http.httpsessionlistener, javax.servlet.http.httpsessionactivationlistener, and HttpSessionEvent javax.servlet.http.httpsessionattributelistener and HttpSessionBindingEvent javax.servlet.servletrequestlistener and ServletRequestEvent javax.servlet.servletrequestattributelistener and ServletRequestAttributeEvent 19

Handling Servlet Lifecycle Events @WebListener() public class SimpleServletListener implements ServletContextListener, ServletContextAttributeListener { static final Logger log = Logger.getLogger("mood.web.SimpleServletListener"); @Override public void attributeadded(servletcontextattributeevent event) { log.log(level.info, "Attribute {0 has been added, with value: {1", new Object[]{event.getName(), event.getvalue()); @Override public void attributeremoved(servletcontextattributeevent event) { log.log(level.info, "Attribute {0 has been removed", event.getname()); @Override public void attributereplaced(servletcontextattributeevent event) { log.log(level.info, "Attribute {0 has been replaced, with value: {1", new Object[]{event.getName(), event.getvalue()); 20

HttpRequest Attribute vs. Parameter HttpRequest Attribute request.setattribute("mood", "sleepy"); String mood = (String) request.getattribute("mood"); http://localhost:8080/servletmood/report HttpRequest Parameter request.setparameter("mood", "sleepy"); or http://localhost:8080/servletmood/report?mood=sleepy String mood = (String) request.getparameter("mood"); 21

Maintaining Client State Many applications require that a series of requests from a client be associated with one another. For example, a web application can save the state of a user's shopping cart across requests. Web- based applications are responsible for maintaining such state, called a session, because HTTP is stateless. To support applications that need to maintain state, Java Servlet technology provides an API for managing sessions and allows several mechanisms for implementing sessions. 22

Accessing a Session Sessions are represented by an HttpSession object. You access a session by calling the getsessionmethod of a request object. This method returns the current session associated with this request; or, if the request does not have a session, this method creates one. 23

Associating Objects with a Session You can associate object- valued attributes with a session by name. Such attributes are accessible by any web component that belongs to the same web context and is handling a request that is part of the same session. HttpSession hs = request.getsession(); Shoppingcart cart = new Shoppingcart(); hs.setattribute("cart", cart); cart.add(item); HttpSession hs = request.getsession(); Shoppingcart cart = hs.getattribute("cart"); List<Object> ls = cart.getitems(); 24

Finalizing a Servlet The web container may determine that a servlet should be removed from service for example, when a container wants to reclaim memory resources or when it is being shut down. In such a case, the container calls the destroymethod of the Servletinterface. In this method, you release any resources the servlet is using and save any persistent state. The destroy method releases the database object created in the init method. A servlet's service methods should all be complete when a servlet is removed. The server tries to ensure this by calling the destroy method only after all service requests have returned or after a server- specific grace period, whichever comes first. 25

Uploading Files Supporting file uploads is a very basic and common requirement for many web applications. javax.servlet.annotation.multipartconfig, is used to indicate that the servlet on which it is declared expects requests to made using the multipart/form- data MIME type. Servlets that are annotated with @MultipartConfig can retrieve the Part components of a given multipart/form- data request by calling the request.getpart(string name) or request.getparts() method. multipart/form- data MIME type A method for uploading files with forms in Browser Scenario: the attachment of an email is attached with form, that is, the attachment is uploaded to server in multipart/form- data MIME type 26

Uploading Files The @MultipartConfig annotation supports the following optional attributes: location: An absolute path to a directory on the file system. The default location is "". filesizethreshold: The file size in bytes after which the file will be temporarily stored on disk. The default size is 0 bytes. MaxFileSize: The maximum size allowed for uploaded files, in bytes. If the size of any uploaded file is greater than this size, the web container will throw an exception (IllegalStateException). The default size is unlimited. maxrequestsize: The maximum size allowed for a multipart/form- data request, in bytes. The web container will throw an exception if the overall size of all uploaded files exceeds this threshold. The default size is unlimited. 27

Uploading Files For, example, the @MultipartConfig annotation could be constructed as follows: @MultipartConfig(location="/tmp", filesizethreshold=1024*1024, maxfilesize=1024*1024*5, maxrequestsize=1024*1024*5*5) Instead of using the @MultipartConfig annotation to hard- code these attributes in your file upload servlet, you could add the following as a child element of the servlet configuration element in the web.xml file. <multipart- config> <location>/tmp</location> <max- file- size>20848820</max- file- size> <max- request- size>418018841</max- request- size> <file- size- threshold>1048576</file- size- threshold> </multipart- config> 28

Uploading Files The Servlet specification supports two additional HttpServletRequestmethods: Collection<Part> getparts() Part getpart(string name) The javax.servlet.http.part interface is a simple one, providing methods that allow introspection of each Part. The methods do the following: Retrieve the name, size, and content- type of the Part Query the headers submitted with a Part Delete a Part Write a Part out to disk 29

Uploading Files Index.html <!DOCTYPE html> <html lang="en"> <head> <title>file Upload</title> <meta http- equiv="content- Type" content="text/html; charset=utf- 8"> </head> <body> <form method="post" action="upload" enctype="multipart/form- data" > File: <input type="file" name="file" id="file" /> <br/> Destination: <input type="text" value="/tmp" name="destination"/> </br> <input type="submit" value="upload" name="upload" id="upload" /> </form> </body> </html> 30

Uploading Files FileUploadServlet.java @WebServlet(name = "FileUploadServlet", urlpatterns = {"/upload") @MultipartConfig public class FileUploadServlet extends HttpServlet { private final static Logger LOGGER = Logger.getLogger(FileUploadServlet.class.getCanonicalName()); protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf- 8"); // Create path components to save the file final String path = request.getparameter("destination"); final Part filepart = request.getpart("file"); final String filen = getfilename(filepart); File file = new File(fileN); final String filename = file.getname(); OutputStream out = null; InputStream filecontent = null; final PrintWriter writer = response.getwriter(); 31

Uploading Files FileUploadServlet.java try { out = new FileOutputStream(new File(path + File.separator + filename));; filecontent = filepart.getinputstream(); int read; final byte[] bytes = new byte[1024]; while ((read = filecontent.read(bytes))!= - 1) { out.write(bytes, 0, read); writer.println("new file " + filename + " created at " + path); LOGGER.log(Level.INFO, "File {0 being uploaded to {1", new Object[]{fileName, path); catch (FileNotFoundException fne) { writer.println("you either did not specify a file to upload or are " + "trying to upload a file to a protected or nonexistent " + "location."); writer.println("<br/> ERROR: " + fne.getmessage()); LOGGER.log(Level.SEVERE, "Problems during file upload. Error: {0", new Object[]{fne.getMessage()); finally { if (out!= null) { out.close(); if (filecontent!= null) { filecontent.close(); if (writer!= null) { writer.close(); 32

Uploading Files FileUploadServlet.java private String getfilename(final Part part) { final String partheader = part.getheader("content- disposition"); LOGGER.log(Level.INFO, "Part Header = {0", partheader); for (String content : part.getheader("content- disposition").split(";")) { if (content.trim().startswith("filename")) { return content.substring( content.indexof('=') + 1).trim().replace("\"", ""); return null; @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); @Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); 33

Uploading Files 34

Web Applications Within Web Servers A Web application is rooted at a specific path within a Web server. For example, a catalog application could be located at http://www.mycorp.com/catalog. A Web application may consist of the following items: Servlets JSP Pages Utility Classes Static documents (HTML, images, sounds, etc.) Client side Java applets, beans, and classes Descriptive meta information that ties all of the above elements together 35

Application Directory Structure An example: /index.html /howto.jsp /feedback.jsp /images/banner.gif /images/jumping.gif /WEB- INF/web.xml /WEB- INF/lib/jspbean.jar /WEB- INF/classes/com/mycorp/servlets/MyServlet.class /WEB- INF/classes/com/mycorp/util/MyUtils.class 36

References Java EE 7 tutorial http://docs.oracle.com/javaee/7/tutorial/doc/servlets001.htm Java Servlet Specification http://download.oracle.com/otn- pub/jcp/servlet- 3_1- fr- eval- spec/servlet- 3_1- final.pdf?authparam=1396178605_99ca893c1d2485541a2baf6a88414 bf8 37

Thank You! 38