Post on 23-Dec-2015
Abhishek Singh
Web Application:• A web application is an application accessible from the web. A web
application is composed of web components like Servlet, JSP, Filter etc. and other components such as HTML. The web components typically execute in Web Server and respond to HTTP request.
CGI(Commmon Gateway Interface) CGI technology enables the web server to call an external program and pass HTTP request information to the external program to process the request.For each request, it starts a new process.
Disadvantages of CGI
• There are many problems in CGI technology:– If number of clients increases, it takes more time for
sending response.– For each request, it starts a process and Web server is
limited to start processes.– It uses platform dependent language e.g. C, C++, perl.
What is a servlet?• A servlet is a Java technology based web component, managed by a container,
that generates dynamic content.• A servlet can be considered as a tiny Java program which processes user request
and generates dynamic content.• There are many other alternatives like php, asp .net or CGI, for developing
dynamic web sites. Benefit of using servlets over other technologies is servlets are developed in Java, so it comes with all benefits of Java language and it is platform independent.
• Following are the some advantages of using servlets.
(1) They are generally much faster than CGI scripts. (2) They use a standard API that is supported by many web servers.
(3) They have all the advantages of the Java programming language,
including ease of development and platform independence. (4) They can access the large set of APIs available for
the Java platform
What is a Servlet Container?
• Servlet container (also known as servlet engine) is a runtime environment, which implements servlet API and manages life cycle of servlet components.Container is responsible for instantiating, invoking, and destroying servlet components. One example of container is Apache Tomcat which is an open source container.
Advantage of Servlet• There are many advantages of Servlet over CGI. The web container creates threads for
handling the multiple requests to the servlet. Threads have a lot of benefits over the Processes such as they share a common memory area, lighweight, cost of communication between the threads are low. The basic benefits of servlet are as follows:– better performance: because it creates a thread for each request not process.– Portability: because it uses java language.– Robust: Servlets are managed by JVM so no need to worry about memory leak, garbage collection
etc.– Secure: because it uses java language..
Servlet Terminology• There are some key points that must be known by the
servlet programmer like server, container, get request, post request etc. Let's first discuss these points before starting the servlet technology.– The basic terminology used in servlet are given below:– HTTP– HTTP Request Types– Difference between Get and Post method– Container– Server and Difference between web server and application server– Content Type– Introduction of XML– Deployment
• HTTP (Hyper Text Transfer Protocol)– Http is the protocol that allows web servers and browsers to exchange data
over the web.– It is a request response protocol.– Http uses reliable TCP connections bydefault on TCP port 80.– It is stateless means each request is considered as the new request. In
other words, server doesn't recognize the user bydefault.
Http Request MethodsHTTP Request Description
GET Asks to get the resource at the requested URL.
POST Asks the server to accept the body info attached. It is like GET request with extra info sent with the request.
HEAD Asks for only the header part of whatever a GET would return. Just like GET but with no body.
TRACE Asks for the loopback of the request message, for testing or troubleshooting.
PUT Says to put the enclosed info (the body) at the requested URL.
DELETE Says to delete the resource at the requested URL.
OPTIONS Asks for a list of the HTTP methods to which the thing at the request URL can respond
What is the difference between Get and Post?
GET POST
1) In case of Get request, only limited amount of data can be sent because data is sent in header.
In case of post request, large amount of data can be sent because data is sent in body.
2) Get request is not secured because data is exposed in URL bar.
Post request is secured because data is not exposed in URL bar.
3) Get request can be bookmarked Post request cannot be bookmarked
4) Get request is idempotent. It means second request will be ignored until response of first request is delivered.
Post request is non-idempotent
5) Get request is more efficient and used more than Post
Post request is less efficient and used less than get.
Anatomy of Get Request• As we know that data is sent in request header in
case of get request. It is the default request type. Let's see what information's are sent to the server.
Anatomy of Post Request• As we know, in case of post request original data is
sent in message body. Let's see how information's are passed to the server in case of post request.
• Servlet can be described in many ways, depending on the context.– Servlet is a technology i.e. used to create web application.– Servlet is an API that provides many interfaces and classes including
documentations.– Servlet is an interface that must be implemented for creating any servlet.– Servlet is a class that extend the capabilities of the servers and respond to
the incoming request. It can respond to any type of requests.– Servlet is a web component that is deployed on the server to create dynamic
web page.
What is Servlet API • Servlet API contains predefined Interface &
helper classes. Implementation of some interface is provided by application developer and implementation of rest of the interfaces is provided by Server vendor. – javax.servlet & its sub packages contain classes and
interface of servlet API.– At the core of servlet API is an interface named
Servlet. This interface provides life cycle method of servlet (Program).Life cycle methods are predefined methods which are invoked by run time environment.
Generic Servlet & HTTP Servlet
GenericServlet
service ( )Server
Client
HTTPServlet
service ( )HTTP Server
Browser
request
response
doGet ( )
doPost( )
request
response
15
Interface javax.servlet.Servlet
• The Servlet interface defines methods – to initialize a servlet– to receive and respond to client requests – to destroy a servlet and its resources– to get any startup information– to return basic information about itself, such as its author,
version and copyright.
• Developers need to directly implement this interface only if their servlets cannot (or choose not to) inherit from GenericServlet or HttpServlet.
Life Cycle
Methods
16
• void init(ServletConfig config) – Initializes the servlet.
• void service(ServletRequest req, ServletResponse res) – Carries out a single request from the client.
• void destroy()– Cleans up whatever resources are being held (e.g., memory, file
handles, threads) and makes sure that any persistent state is synchronized with the servlet's current in-memory state.
• ServletConfig getServletConfig() – Returns a servlet config object, which contains any initialization
parameters and startup configuration for this servlet. • String getServletInfo()
– Returns a string containing information about the servlet, such as its author, version, and copyright.
GenericServlet - Methods
17
Initializationinit()
Serviceservice()
doGet()doPost()
doDelete()doHead()doTrace()
doOptions()
Destructiondestroy()
Concurrent Threadsof Execution
Servlet Life Cycle
18
HttpServlet - Methods
• void doGet (HttpServletRequest request, HttpServletResponse response)–handles GET requests• void doPost (HttpServletRequest request, HttpServletResponse response)–handles POST requests• void doPut (HttpServletRequest request, HttpServletResponse response)–handles PUT requests• void doDelete (HttpServletRequest request, HttpServletResponse response)– handles DELETE requests
19
Servlet Request Objects
• provides client request information to a servlet. • the servlet container creates a servlet request object and
passes it as an argument to the servlet's service method. • the ServletRequest interface define methods to retrieve data
sent as client request:– parameter name and values– attributes– input stream
• HTTPServletRequest extends the ServletRequest interface to provide request information for HTTP servlets
20
HttpServletResponse - Methods
java.io.PrintWriter getWriter()Returns a PrintWriter object that can sendcharacter text to the client
void setContentType (java.lang.String type)
Sets the content type of the response being sent to the client. The content type may include the type of character encoding used, for example,
text/html; charset=ISO-8859-4 int getBufferSize()
Returns the actual buffer size used for the response
21
Life Cycle method of a servlet interface --: init()-: this method is invoked only once just after a servlet object is
created, it is used by application programmer to define initialization logic of a servlet. This method like as constructor. ---- -public void init (ServletConfig config) This method is used by server to provide reference of ServletConfig object to the servlet. ServletConfig is an interface of Servlet API, implementation of this interface provided by server vendors.
service ()-: this method is invoked each time request is received for a servlet. It is used by application programmer to defining request
processing logic. – public void service(ServletRequest request ServletResponse response) throws
ServletException,IOException In this method references of object of type servlet Request & servlet -Response are provided by server. Both of these are interfaces, implementation of these interfaces is provided by server vendor. These objects are used to Transfer data b/w server & servlet.
destroy()-: This method is invoked only once just before the servlet is unloaded. public void destroy(); It is used by application programmer for performing cleanup operations.
Description of figure---: 1.2-: ServletConfig object is created for the servlet. 1.4 & 3.1-: Servlet request object are created and request data is
stored in it. 1.5 & 3.2-: Servlet response object is created to receive result of
request processing from the servlet. 1.6 & 3.3-: Request processing thread is started. 1.7 & 3.4-: service method is invoked by the request processing
thread. 1.8 & 3.5-: request data is read by the servlet during request
processing logic. 1.9 & 3.6-: dynamically generated contents are stored by the servlet
in servlet response object. 2.0 & 3.7-: after the complication of service method server reads
the contents of servlet response object. 2.1 & 3.8-: Contents of servlet response are sent as response to the
client.
• After Some time limit Server invoke destroy() method on servlet. In order to define servlet, implementation of Servlet interface needs to be provided. To facilitate indirect implementation Servlet API provide a helper class named GenericServlet. This class implement Servlet interface and define all the method except service method. It is used as super class of user defines servlet.
• NOTE-:If a class implements an interface and not define all method of this that class must be abstract class.
• There are given five steps to create a servlet example. These stepse are required for all the servers.
• The servlet example can be created by three ways:– By implementing Servlet interface,– By inheriting GenericServlet class, (or)– By inheriting HttpServlet class
• The mostly used approach is by extending HttpServlet because it provides http request specific method such as – doGet(), – doPost(), – doHead() etc.
• Here, we are going to use apache tomcat server in this example. The steps are as follows:– Create a directory structure– Create a Servlet– Compile the Servlet– Create a deployment descriptor– Start the server and deploy the application
• Servlet interface and it implementation provided by GenericServlet are protocol neutral. Usually request is submitted to a servlet using Http protocol. Http protocol support following 8 type of request--:
Create a directory structures:• The directory structure defines that where to put the different
types of files so that web container may get the information and respond to the client. The Sun Microsystem defines a unique standard to be followed by all the server vendors. Let's see the directory structure that must be followed to create the servlet.
the servlet class file must be in the classes folder. The web.xml file must be under the WEB-INF folder.
HTTP Redirects
• Page redirection is generally used when a document moves to a new location and we need to send the client to this new location or may be because of load balancing , or for simple randomization.
• The simplest way of redirecting a request to another page is using method sendRedirect() of response object. Following is the sig nature of this method:
public void HttpServletResponse.sendRedirect(String location) throws IOException
• T his method sends back the response to the browser along with the status code and new pag e location. You can also use setStatus() and setHeader() methods tog ether to achieve the same:– ....– String site = "http://www.newpage.com" ;– response.setStatus(response.SC_MOVED_TEMPORARILY
);– response.setHeader("Location", site);– ....
Example• import java.io.*;• import java.sql.Date;• import java.util.*;• import javax.servlet.*;• import javax.servlet.http.*;• public class PageRedirect extends
HttpServlet• {• public void
doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException
• {• // Set response content type• response.setContentType("text/
html");• // New location to be redirected• String site = new
String("http://www.facebook.com");
• response.setStatus(response.SC_MOVED_TEMPORARILY);
• response.setHeader("Location", site);
• }• }
Web.xml• ....• <servlet>• <servlet-name>PageRedirect</servlet-name>• <servlet-class>PageRedirect</servlet-class>• </servlet>• <servlet-mapping>• <servlet-name>PageRedirect</servlet-name>• <url-pattern>/PageRedirect</url-pattern>• <welcome-file-list>• <welcome-file>PageRedirect</welcome-file>• </welcome-file-list>
• </servlet-mapping>
HTTP Servlet Overview
Servlets are modules that extend request/response-oriented servers, such as Java-enabled web servers. For example, a servlet might be responsible for taking data in an HTML order-entry form and applying the business logic used to update a company's order database.
Java Servlets
• Java’s answer to CGI + ASP• A little more general than CGI/ASP, etc.• Work with all major web servers• Need web server servlet engine• Need servlet development kit
What’s good about them?
• Concurrency – A servlet can handle multiple request. (Synchronize)
• Forward Request
• Portability
• Efficiency
• Power
• Safety
Types of Servlet
• Generic Servlet – javax.servlet (package)– extends javax.servlet.Servlet – service method
• Http Servlet– javax.servlet.http (package)– extends javax.servlet.HttpServlet– doget(), doPost()….
Types of servlets (cont..)
• Generic servlet– service(Request, Response) throws
ServletException, IOException• HttpServlet
– doGet(HttpServletRequest req, HttpServletResponse res)
Basic Servlet exampleimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class Test extends HttpServlet{ public void doGet(HttpServletRequest in,
HttpServletResponse out) throws ServletException, IOException {
out.setContentType(“text/html”); PrintWriter p = res.getWriter(); p.println(“<H1>HELLO, WORLD!</H1>”); }}
POST Exampleimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class Test extends HttpServlet{ public void doGet(HttpServletRequest req,
HttpServletResponse res) throws ServletException, IOException {
res.setContentType(“text/html”); PrintWriter out = res.getWriter();
String pin = req.getParameter(“to”); String orig = req.getParameter(“from”);
out.println(“Sending page to “ + pin + “ from “ + orig); // Actually send the page.
} public void doPost(HttpServletRequest in, HttpServletResponse out) throws ServletException, IOException {
doGet(in, out); }}
Counter exampleimport ….;public class SimpleCounter extends HttpServlet {int count =0 ;public void doGet( …….) throws …. {
res.setContentType(“text/plain”);PrintWriter out = res.getWriter();
count ++; out.println(“Hit number: “+count); }}// end of class
• What is the problem with the above example??
Synchonized counterimport ….;public class SimpleCounter extends HttpServlet {int count =0 ;public void doGet( …….) throws …. {
res.setContentType(“text/plain”);PrintWriter out = res.getWriter();
synchonize(this) { count ++; out.println(“Hit number: “+count); } }}// end of class
Servlet Life Cycle
• Initialize using init method• Servlet handles requests/clients• Server removes the servlet using destroy
method
Servlets vs. Applets
• Similarities– Neither has a main()– Both have init() and destroy()– Both are part of a larger application made for the
web
Servlets vs. Applets (cont..)
• Dissimilarity– Applets run on the client (browser) while servlets run on
the HTTP server– Applets are usually “crippled” in functionality, having
limited ability to look at the local file system, establish network connections, etc.
– Servlets are generally built to handle multiple clients at once, whereas applets generally service one client at a time.
– Servlets handle HTTP request – …
Servlet Session I: Cookie API
The Potential of Cookies
• Idea– Servlet sends a simple name and value to client.– Client returns same name and value when it
connects to same site (or same domain, depending on cookie settings).
• Typical Uses of Cookies– Identifying a user during an e-commerce session– Avoiding username and password– Customizing a site– Focusing advertising
Cookies and Focused Advertising
Creating Cookies
Creating Cookies
Three steps to creating a new cookie:1) Create a new Cookie Object
Cookie cookie = new Cookie (name, value);
2) Set any cookie attributes Cookie.setMaxAge (60);
3) Add your cookie to the response object: Response.addCookie (cookie)
We will examine each of these steps in detail.
Sending Cookies to the Client• Create a Cookie object.
– Call the Cookie constructor with a cookie name and a cookie value, both of which are strings.Cookie c = new Cookie("userID", "a1234");
• Set the maximum age. – To tell browser to store cookie on disk instead of just in
memory, use setMaxAge (argument is in seconds)c.setMaxAge(60*60*24*7); // One week
• Place the Cookie into the HTTP response – Use response.addCookie. – If you forget this step, no cookie is sent to the browser!
response.addCookie(c);
1. Cookie Constructor You create a new cookie by calling the Cookie
constructor and specifying: Name Value
Example: Cookie cookie = new Cookie (“school”, “NYU”);
Neither the name nor the value should contain whitespace or any of the following characters: [ ] ( ) = , “ / ? @ ;
2. Set Cookie Attributes
Before adding your cookie to the Response object, you can set any of its attributes.
Attributes include: Name/Value Domain Maximum Age Path Version
Cookie Name
You rarely call setName() directly, as you specify the name in the cookie constructor.
getName() is useful for reading in cookies.
public String getName();
public void setName (String name);
Domain Attributes
public String getDomain ();
public void setDomain(String domain);
Normally, the browser only returns cookies to the exact same host that sent them.
You can use setDomain() to instruct the browser to send cookies to other hosts within the same domain.
JDBC & Servlet
By:Abhishek Singh
Outline• HTML Forms• Tomcat• Functions in JDBC & Servlet
HTML FormsAn interface controls to collect data from the user and transmit it to server.
Element in Forms• TEXT CONTROLS:
<INPUT TYPE="TEXT" NAME="NAME" VALUE="INIT">
• PASSWORD FIELDS:<INPUT TYPE="PASSWORD" NAME="PASSWORD">
• TEXT AREAS:<TEXTAREA NAME="RESUME" ROWS=5 COLS=30>INPUT YOUR RESUME HERE </TEXTAREA>
• Checkbox<input type="checkbox" name="checkbox" checked><input type="checkbox" name="checkbox">
• Radio Button<input type="radio" name="radio" checked><input type="radio" name="radio">
Cont.• List
<select name="list"> <option value="Item 1">Item 1</option> <option value="Item 2">Item 2</option> <option value="Item 3">Item 3</option> </select>
• Multilist<select name="multilist" size="3" multiple> <option value="Item 1">Item 1</option> <option value="Item 2">Item 2</option> <option value="Item 3">Item 3</option> </select>
Cont.• Submit Button
<input type="submit" name="submit" value="Submit">
• Reset Button<input type="reset" name="reset" value="Reset Fields">
• Image Button<input type="image" name="image" src="go.gif">
• File<input type="file" name="file">
Tomcat• A light web server that supports servlet & JSP.• It can be integrated in Apache, IIS
For installation process, please refer:CS III: Lab assignment, servlet
http://www.cse.msstate.edu/~cs2324/spring03/
What is JDBC & Servlet?• JDBC (Java DataBase Connectivity) provides
functions to access database system.• Servlet enables java for CGI programs.• Setup JDBC environment:
Please refer: CS III, Lab assignment, JDBChttp://www.cse.msstate.edu/~cs2324/spring03/
JDBC : Establishing a Connection
• loading the driver DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
• making the connection String url = "jdbc:oracle:thin:@ra.msstate.edu:1521:ACAD";
Connection con = DriverManager.getConnection(url, “loginName", “Password");
Statement• Create a statement Statement stmt = con.createStatement();
• Two methods of statement 1. executeUpdate() create, alter, drop a table
Or insert, delete, update data
2. executeQuery() select
Create Table• String createTableCoffees = "CREATE TABLE COFFEES " +
"(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " + "SALES INTEGER, TOTAL INTEGER)";
stmt.executeUpdate(createTableCoffees);
Query Data from a Table• stmt.executeQuery (“select * from customer”);
• ResultSet rs = stmt.executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES");
Display Result• Method next() Initially the cursor is above the first row of data. After call the method
next(), the cursor is pointing to the first row of data.• A Sample while (rs.next()) { String s = rs.getString ("COF_NAME"); float n = rs.getFloat ("PRICE"); System.out.println (s + " " + n); }
References: http://java.sun.com/docs/books/tutorial/jdbc/index.html
Methods to Call a Servlet• GET
In html: <A HREF="/servlet/dosearch?aa=12&bb=32">Return Home</A>In html forms:<FORM ACTION=“/servlet/dosearch” METHOD=“GET”>
• POST In html forms: <FORM ACTION=“/servlet/dosearch” METHOD=“POST”>
Interacting with Clients Handling GET and POST Requests public void doGet (HttpServletRequest
request,HttpServletResponse response) throws ServletException, IOException
<a href="/servlet/getCustomers">List Customers</a>
public void doPost (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
<FORM ACTION=\"/servlet/doInsert\" METHOD=post>
Output of the ResponseSet the content type of the output
response.setContentType ("text/html")
Get parameterString bookId = request.getParameter ("bookId");
Get the output stream to write to PrintWriter out = response.getWriter();
out.println(“<HTML>”);
Servlet Program Structures import javax.servlet.*;
import javax.servlet.http.*;
Class must extend from class HttpServlet
A Simple Application public class SimpleServlet extends HttpServlet { // Handle the HTTP GET method by building a simple web page. public void doGet (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String title = "Simple Servlet Output"; // set content type and other response header fields response.setContentType("text/html"); // then write the data of the response out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println (title); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>" + title + "</H1>"); out.println("<P>This is output from SimpleServlet."); out.println("</BODY></HTML>"); out.close();
}}