[go: up one dir, main page]

0% found this document useful (0 votes)
8 views64 pages

Lecture 3.2

The document outlines a lecture on HttpServlet Request and Response, focusing on the ServletRequest and ServletResponse interfaces, and their methods for handling client requests and sending responses. It includes examples of using JDBC with servlets for database connectivity and demonstrates the servlet lifecycle methods. The document also covers the creation of a simple web application using servlets, including HTML forms and handling user input.

Uploaded by

hritik08092004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views64 pages

Lecture 3.2

The document outlines a lecture on HttpServlet Request and Response, focusing on the ServletRequest and ServletResponse interfaces, and their methods for handling client requests and sending responses. It includes examples of using JDBC with servlets for database connectivity and demonstrates the servlet lifecycle methods. The document also covers the creation of a simple web application using servlets, including HTML forms and handling user input.

Uploaded by

hritik08092004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 64

INSTITUTE : UIE

DEPARTMENT : CSE
Bachelor of Engineering (Computer Science
& Engineering)
PROJECT BASED LEARNING IN JAVA WITH LAB
(22CSH-359/22ITH-359)

TOPIC OF PRESENTATION:
HttpServlet Request and Response,
Servlet with JDBC (CO 5)
DISCOVER . LEARN .
EMPOWER
Lecture Objectives

In this lecture, we will discuss:


•HttpServlet Request and
Response, Servlet with JDBC.

2
Servlets Request Interface

ServletRequest Interface
The ServletRequest Interface is used
to handle client request to access a
servlet. It provides the information of
a servlet like content type, content
length, parameter names and values
etc.
Servlets Request Interface

ServletRequest Interface Methods


Following are the important
methods of ServletRequest
Interface:
Example

 Example : Request to take username & password. Display


username.
 //index.html
<form action="test" method="post">
User Name: <input type="text" name="uname"><br>
Password: <input type = "password name =
"password"><br>
<input type="submit" value="Log In">
</form>
//web.xml
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
 //ServletDemo.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ServletDemo extends HttpServlet
{
protected void doPost(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
try
{
String username = req.getParameter("username");
String password = req.getParameter("password");
pw.println("<h1> Hello"+username+"<h1>");
}
finally
{
pw.close();
}
}
}
ServletResponse Interface

The ServletResponse interface


defines an object to help a Servlet in
sending a response to the client. It
has various methods that help a
servlet to respond to the client
requests.
Servlets Response
Interface
ServletResponse Interface Methods
Example

 Example : Request to take username & password. Display


username.
 //index.html
<form action="test" method="post">
User Name: <input type="text" name="uname"><br>
Password: <input type = "password name =
"password"><br>
<input type="submit" value="Log In">
</form>
//web.xml
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
Using JDBC from a Servlet

 Servlets and databases


 Communicate via JDBC
 Connect to databases in general manner
 Use SQL-based queries
 Three tier distributed applications
 User interface
 Often in HTML, sometimes applets
 HTML preferred, more portable
 Business logic (middle tier)
 Accesses database
 Database access
 Three tiers may be on separate computers
 Web servers for middle tier
Using JDBC from a Servlet

 Servlets
 Method init
 Called exactly once, before client requests
 Initialization parameters
 Method destroy
 Called automatically, cleanup method
 Close files, connections to databases, etc.
Using JDBC from a Servlet

 HTML files
 <INPUT TYPE=CHECKBOX NAME=name
VALUE=value>
 Creates checkbox, any number can be selected

 <INPUT TYPE=TEXT NAME=name>


 Creates text field, user can input data
Using JDBC from a Servlet

 Example servlet
 Guest book to register for mailing lists
 HTML document first tier
 Get data from user
 Use servlet as middle tier
 Provides access to database
 Set up connection in init
 Microsoft Access database (third tier)
1// Fig. 19.16: GuestBookServlet.java

2// Three-Tier Example

3import java.io.*;

4import javax.servlet.*;

5import javax.servlet.http.*;

6import java.util.*;

7import java.sql.*;

9public class GuestBookServlet extends HttpServlet {

10 private Statement statement = null;

11 private Connection connection = null;

12 private String URL = "jdbc:odbc:GuestBook";

13

14 public void init( ServletConfig config )


15 throws ServletException

16 {
init called exactly once, before
17 super.init( config );
client requests are processed. Note
18
the first line format. 1. import

19 try {

20 Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); 1.1 URL

21 connection = 2. init

22 DriverManager.getConnection( URL, "", "" ); 2.1 Connect to database

23 }

24 catch ( Exception e ) {

25 e.printStackTrace();

26 connection = null;
Get connection to database (no name/password).
27 }

28 }

29
30 public void doPost( HttpServletRequest req,

31 HttpServletResponse res )

32 throws ServletException, IOException

33 {

34 String email, firstName, lastName, company,

35 snailmailList, cppList, javaList, vbList,

36 iwwwList;

37

38 email = req.getParameter( "Email" );

39 firstName = req.getParameter( "FirstName" );

40 lastName = req.getParameter( "LastName" );

41 company = req.getParameter( "Company" );

42 snailmailList = req.getParameter( "mail" );

43 cppList = req.getParameter( "c_cpp" );

44 javaList = req.getParameter( "java" );

45 vbList = req.getParameter( "vb" );

46 iwwwList = req.getParameter( "iwww" );

47

48 PrintWriter output = res.getWriter(); 3. doPost

49 res.setContentType( "text/html" );
3.1 getParameter

50

51 if ( email.equals( "" ) ||
3.2 getWriter

52 firstName.equals( "" ) || 3.3 println

53 lastName.equals( "" ) ) {

54 output.println( "<H3> Please click the back " +

55 "button and fill in all " +

56 "fields.</H3>" );

57 output.close();

58 return;

59 }
60
61 /* Note: The GuestBook database actually contains fields
62 * Address1, Address2, City, State and Zip that are not
63 * used in this example. However, the insert into the
64 * database must still account for these fields. */
65 boolean success = insertIntoDB(
66 "'" + email + "','" + firstName + "','" + lastName +
67 "','" + company + "',' ',' ',' ',' ',' ','" +
68 ( snailmailList != null ? "yes" : "no" ) + "','" +
69 ( cppList != null ? "yes" : "no" ) + "','" +
70 ( javaList != null ? "yes" : "no" ) + "','" +
71 ( vbList != null ? "yes" : "no" ) + "','" +
72 ( iwwwList != null ? "yes" : "no" ) + "'" );
73
74 if ( success )
75 output.print( "<H2>Thank you " + firstName +
76 " for registering.</H2>" );
77 else
78 output.print( "<H2>An error occurred. " + 4. insertIntoDB
79 "Please try again later.</H2>" );
80 4.1 createStatement
81 output.close();
82 }
83
84 private boolean insertIntoDB( String stringtoinsert )
85 {
86 try {
87 statement = connection.createStatement();
88 statement.execute(

89 "INSERT INTO GuestBook values (" +


90 stringtoinsert + ");" );

91 statement.close(); Insert data into database.


92 }

93 catch ( Exception e ) {

94 System.err.println(

95 "ERROR: Problems with adding new entry" );

96 e.printStackTrace();

97 return false;

98 }

99

100 return true;

101 }

102 destroy called automatically,


103 public void destroy()
closes connection to database.
104 {

105 try {

106 connection.close();
4.2 INSERT INTO
107 }

108 catch( Exception e ) {


5. destroy

109 System.err.println( "Problem closing the database" );

110 } 5.1 close

111 }

112 }
1<!-- Fig. 19.17: GuestBookForm.html -->

2<HTML>

3<HEAD>

4 <TITLE>Deitel Guest Book Form</TITLE>

5</HEAD>

7<BODY>

8 <H1>Guest Book</H1>

9 <FORM

10 ACTION=http://lab.cs.siu.edu:8080/rahimi/GuestBookServlet

11 METHOD=POST><PRE>

12 * Email address: <INPUT TYPE=text NAME=Email>


13 * First Name: <INPUT TYPE=text NAME=FirstName>

14 * Last name: <INPUT TYPE=text NAME=LastName>

15 Company: <INPUT TYPE=text NAME=Company>

16

17 * fields are required

18 </PRE>

Create text fields and


HTML file

19

20 <P>Select mailing lists from which you want checkboxes for user
1. <FORM>

21 to receive information<BR> input. 1.1 TYPE=text

22 <INPUT TYPE=CHECKBOX NAME=mail VALUE=mail> 2. TYPE=CHECKBOX

23 Snail Mail<BR>

24 <INPUT TYPE=CHECKBOX NAME=c_cpp VALUE=c_cpp>

25 <I>C++ How to Program & C How to Program</I><BR>

26 <INPUT TYPE=CHECKBOX NAME=java VALUE=java>

27 <I>Java How to Program</I><BR>

28 <INPUT TYPE=CHECKBOX NAME=vb VALUE=vb>

29 <I>Visual Basic How to Program</I><BR>


30
31 <INPUT TYPE=CHECKBOX NAME=iwww VALUE=iwww>
32 <I>Internet and World Wide Web How to Program</I><BR>
33 </P>
34 <INPUT TYPE=SUBMIT Value="Submit">
35 </FORM>
36 </BODY>
37 </HTML>
Program Output
Program Output
GET and POST
Requests
Request & Response Objects

22
Agenda

doGet and doPost methods

HttpServletRequest & HttpServletResponse

3 Create & Deploy Simple application

4 Accessing database

23
Objectives
At the end of this module, you will be able to:

–Describe the role of HTTP Servlet in Web Programming

–Describe and use the Servlet Life Cycle methods appropriately

–Process parameters from HTML forms

–Establish Database Connectivity through servlets

24
The doGet and doPost methods
• Methods doGet() and doPost() in HttpServlet class receives appropriate
client request, and formats a response using 2 arguments
• An HttpServletRequest object - encapsulates data from the
client
• An HttpServletResponse object - encapsulates response
to the
client

• Both these objects are created by the servlet container

• Usage:
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException

public void doGet(HttpServletRequest req, HttpServletResponse


25
res)
throws IOException, ServletException
HttpServletRequest interface
• HttpServletRequest
– The HttpServletRequest object incorporates any
communication from client to servlet
–Provides methods that allow you to
retrieve incoming
information
• For example: HTTP request headers, form data,
or a client's hostname

•Methods to read parameters from a form


– getParameter(String pname)
– getParameterNames()
– getParameterValues(String pname)
26
HttpServletResponse interface (Contd.).
• HttpServletResponse
– The HttpServletResponse object incorporates any
communication from servlet to client
– Allows you to specify outgoing information
• For example: response headers
and HTTP status
codes
– Also enables you to obtain a PrintWriter object for writing
output back to the client

• Methods:
– getWriter
– setContentType
27

– sendRedirect
First Servlet Example -
Demo

28
Create the dynamic web project

29
Configure tomcat server in Eclipse? (One time Requirement)

30
Enable web.xml deployment descriptor

31
Create the servlet

Right click to create


servlet file

32
Select the servlet option

33
Type class name

34
35
Select Finish

36
37
Source Code for First_Servlet_Program Example

import java.io.*; import javax.servlet.*;


import javax.servlet.http.*;

public class First_Servlet_Program extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse


response)
throws IOException, ServletException
{

response.setContentType("text/html"); PrintWriter out =


response.getWriter(); out.println("<html>"); out.println("<head>");
out.println("<title> First Servlet Program!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Welcome To First Servlet Program !!!</h1>");
out.println("</body>");
out.println("</html>");
}
}

38
Output response

39
Request Object

40
Create HTML file – index.html

41
Request object Parameters – Form Data
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

PrintWriter out = response.getWriter(); response.setContentType("text/html");


out.println("<html>");
out.println("<head>");
out.println("<title> Request Object example </title>"); out.println("</head>");

out.println("<body bgcolor=\"yellow\">");
out.println("<h1>"+"Request object Parameters: " + "</h1>"+"<br>");
out.println("<h2>" + "User Details" + "</h2>"); Enumeration<String> reqParams =
request.getParameterNames();

while (reqParams.hasMoreElements()) {
String name = (String)reqParams.nextElement(); String value = request.getParameter(name);
out.println("<b> "+name + "</b>"+ " = " +value+"<br>");
}

out.println("The Name you entered was: " + request.getParameter("userName")+"<br>");


out.println("The Address you entered was: " + request.getParameter("userAddress"));

out.println("</body>"); out.println("</html>");

42
Request object Info

protected void doPost(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

response.setContentType("text/html");
out.println("<html>"); out.println("<head>");
out.println("<title> Request Object example </title>");
out.println("</head>");

out.println("<body bgcolor=\"yellow\">"); out.println("<h1>"+"Request

object Info: " + "</h1>"+"<br>");


out.println("<b>Method:</b> "+ request.getMethod()+"<br>");
out.println("<b>Protocol: request.getProtocol()
</b>" +
out.println("<b>Request +"<br>");
URI: </b>"+ request.getRequestURI()+"<br>");
out.println("<b>PathInfo:
out.println("<b>Remote request.getPathInfo()
Address: </b>" +
</b>" +
request.getRemoteAddr()+"<br>"); +"<br>");

out.println("</body>");
out.println("</html>");
43

}
Request object Headers details
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

PrintWriter out = response.getWriter(); response.setContentType("text/html");


out.println("<html>"); out.println("<head>");
out.println("<title> Request Object example </title>");
out.println("</head>");

out.println("<body bgcolor=\"yellow\">");

out.println("<h1>"+"Request object Headers details: " + "</h1>"+"<br>");


Enumeration<String> reqHeaders = request.getHeaderNames(); out.println("<table
border=0>");

while (reqHeaders.hasMoreElements()) {
String name = (String)reqHeaders.nextElement(); String value =
request.getHeader(name); out.println("<tr><td bgcolor=\"#CCCCCC\">");
out.println("<b>" + name + "</b>" +" = " + value); out.println("</td><td>");
out.println("</td></tr>");
}
out.println("</table>");

out.println("</body>"); out.println("</html>");

}
44
Handling Form Data

45
Handling Form
Data
• Write a Servlet that retrieves form parameters from the HTML
form

• Simpleform.html
<html>
<head><title>Simple Form</title></head>
<body>
<form method=“post” action=“SimpleFormServlet”>
<h3>Enter user details</h3>
<br>Name: <input type=“text” name=“userName” />
<br>Address: <input type=“text” name=“userAddress” />
<input type=“submit” value=“Submit” />
46
</form>
</body>
The getParameter() method
• Syntax: public String getParameter(String name)

• To get request parameters sent as an extra information with the request,


invoke getParameter method of ServletRequest (HttpServletRequest
extends ServletRequest)
– Provide parameter name as an argument
– Returns a string that contains URL-decoded value of first occurrence
of that parameter name
• If parameter exists but has no value, then an empty string is

returned
• If parameter does not exist, then null is returned

• Use this method when you are sure the parameter has only one value

47
• Example: String name = request.getParameter("userName");
Example Servlet: Handling Form
Data
• SimpleFormServlet's doPost method retrieves request
parameters such as user’s name and address having a
single value from the form

public class SimpleFormServlet extends HttpServlet {


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException { response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("userName"); String address =
request.getParameter("userAddress"); out.println("<html>");
out.println("<h1>" + “User Details" + "</h1>"); out.println("<p>The Name you
entered was: " + name + "</p>");
out.println("<p> The Address you entered was: " + address + "</p>");
}
}

48
Demo for Handling Simple Form
Data
• Demonstrate a SimpleFormServlet with a doPost method that
retrieves request parameters such as user’s name and
address having a single value from the form (getParameter
method)

49
Reason it out

• What difference does it make if SimpleFormServlet used


doGet method and accordingly method=“GET” in the html
form?

50
Form Data for different HTML Components
• Suppose a Job seeker Company needs basic information
about the user’s name, address, state, highest qualification
and skills
 comp.html
<html>
 <head><title>Information
Details</title></head>
 <body>
 <form action=“differentCompServlet"
method=POST>
 <BR>Name: <input type=text name=”name” />
 <BR>Address: <textarea name=”address”
rows=5 cols=20></textarea>
51
 <BR>State: <select name="state">

Form Data for different HTML Components (Contd.).

comp.ht
ml

<BR><BR>Highest Qualification:<BR>
Under Graduate<input type=radio name=qualification value=”UG”> Post
Graduate<input type=radio name=qualification value=”PG”>
<BR><BR>Skills:<BR>
Java<input type=checkbox name=skills value=Java>
Servlets<input type=checkbox name=skills value=Servlets>
JSPs<input type=checkbox name=skills value=JSPs> EJB 3.0<input type=checkbox
name=skills value=EJB>
<BR><BR><input type=submit value=submit><input type=reset>
</form>
</body>
</html>
52
Methods: getParameterNames() and getParameterValues()

• Syntax: public Enumeration getParameterNames()


– Returns a full list of parameter names as an Enumeration of
String objects, each String containing the name of a request
parameter
– Returns an empty Enumeration if the request has no parameters

• Use this method if a servlet has to get


a full list of all request parameters

• Syntax: public String[ ] getParameterValues(String name)


– Returns an array of String objects containing all values the given
request parameter has
– Returns null if the parameter does not exist
– If the parameter has a single value, the array has a length of 1

32 • checkbox
Use this method if a parameter has more than one value. Ex:
Example Servlet: Listing different Form Data

• DifferentCompServlet's doPost method retrieves request parameters


using getParameterNames and getParameterValues

public class DifferentCompServlet extends HttpServlet {


public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html"); PrintWriter pw = res.getWriter();
Enumeration e = req.getParameterNames();
// Get enumeration of parameter names

while(e.hasMoreElements()) {
String pname = (String) e.nextElement();
String pvalues[] = req.getParameterValues(pname); pw.println(pname+" :
");
// print parameter values by iterating through array
for(int count = 0; count < pvalues.length; count++)
{
54
pw.println(pvalues[count]);
}
Demo for Handling Different Form Data
• Demonstrate a DifferentFormServlet with a doPost
method that retrieves request parameters of various form
data using getParameterNames and getParameterValues

55
Using JDBC in a
Servlet
• A servlet can retrieve information from a database
or perform update/delete/insert queries to/from a
database Web Server
Servlet Container

Browser Database
DatabaseServlet
Request

Response

56
Demo for accessing database
• A servlet to display records from database table
import java.sql.*;
import javax.servlet.*; import javax.servlet.http.*; import
java.io.*;
public class DatabaseServlet extends HttpServlet {
Connection con; PreparedStatement st; Statement stmt;
ResultSet rs;
public void init(ServletConfig config) throws ServletException {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("Jdbc:Odbc:vdsn2", "scott",
"tiger");
System.out.println("Connected..");
} catch (Exception e) {
System.out.println("Error in connection.."); }}

57
Demo for accessing database (Contd.).

public void doGet(HttpServletRequest req, HttpServletResponse


res) throws ServletException, IOException {
res.setContentType("text/html"); PrintWriter pw =
res.getWriter();
//Displaying records try {
stmt = con.createStatement();
rs = stmt.executeQuery("select * from books");

pw.println("Displaying Book Records..."); while (rs.next())


{
pw.println("<p>" + rs.getInt(1) + " " + rs.getString(2) + " "
+rs.getString(3));
}
} catch (Exception e) { System.out.println("Error..." + e);
} } } 58
Summary
In this module, you were able to:

– Process parameters from HTML


forms

59
Quiz
1. The doGet() or doPost() method of a Servlet are invoked by
1. init() method
2. service() method
3. destroy() method

• --------------- is the deployment descriptor file for Servlets


1. servlet-config.xml
2. web.xml
3. struts-config.xml

60
Thank
You

61
Summary:

In this session, you were able to :


• HttpServlet Request and Response,
Servlet with JDBC
References:
Books:
1. Balaguruswamy, Java.
2. A Primer, E.Balaguruswamy, Programming with Java, Tata McGraw Hill
Companies
3. John P. Flynt Thomson, Java Programming.
Video Lectures :
https://youtu.be/TrfqKn6vzAI
https://www.youtube.com/watch?v=WXmTxgDg52o
Reference Links:
https://www.javatpoint.com/example-of-registration-form-in-servlet
https://www.javatpoint.com/example-of-fetching-result-for-the-given-rollno-in-servlet
https://www.javatpoint.com/improving-servlet-performance-to-fetch-records
https://www.geeksforgeeks.org/java-servlet-and-jdbc-example-insert-data-in-mysql/
https://www.tutorialspoint.com/servlets/servlets-database-access.htm
THANK YOU

You might also like