[go: up one dir, main page]

0% found this document useful (0 votes)
18 views58 pages

Servlet (5)

Uploaded by

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

Servlet (5)

Uploaded by

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

Servlet

_______________________________________________________________________
Q. what is Servlet?
_______________________________________________________________________________
Servlet is a java based server side technology which is used for develop the dynamic web pages

Q. What is a server side technology?


____________________________________________________________________________
Those technology need server for execute its application called as server side technology.

Q. what is server?
______________________________________________________________________
Server is application or software
which is used for manages the user application at central location and accept request from client
application and provide response to client application.
Some of server application 1. Apache tomcat 2. glassfish 3. web logic etc

Q. What is client?
____________________________________________________________________
Client is application which is used for send the request to server and accept response server
In the case of web technology browser work as client application or software

Q. What is client side technology?


Client side technology means those technologies need a client for execute its application called as client
side technology.
HTML, CSS, JS is best of example of client side technology or languages

Q. How client send request to server?


_________________________________________________________________________
Client application send request to server application with the help of protocol.

Q. what is protocol?
__________________________________________________________________________
Protocol means some standard rules and regulation for communication between two different parties
called as protocol

Types of protocol
http: hyper text transfer protocol and this protocol normally used in web technology and send request
in the form of html or text format.
https: hyper text transfer protocol security layer
TCP/IP : Transfer control protocol / internet protocol it is used for send the data between client and
server in the form of packets.
FTP: File transfer protocol it is used for upload the file on server or download the data from server
POP3 : Post office protocol it is used for read the mail and store as post office local machine of users.
Example: outlook
SMTP : SMTP simple mail transfer protocol it is used for send the mail
etc

Q. What are dynamic web pages?


___________________________________________________________________________
Dynamic web pages means those web pages connected with database and render data from database
and update on web page called as dynamic web pages.

Q. what is static web pages?


_________________________________________________________________________
Those pages not connected with database and cannot modify its content at run time called as static web
pages.

How to develop the servlet application or How to create Servlet application


_______________________________________________________________________________
Steps to develop application by using servlet

1. Installed Apache tomcat as web server


_________________________________________________________________
Apache tomcat work as web server so we required to install apache tomcat
You can download the apache tomcat using following URL
https://tomcat.apache.org/download-90.cgi

When we installed the server then at the time of installation we required to provide two port
numbers 1. Server shut down port 2. Server connector port

Q. What is port number and why we need to provide port number to server?
____________________________________________________________________________________
Port number is unique identity of server in network and it is used for identify for server in machine
because there is possibility single machine can have more than on server and if we want to access
particular server then we provide unique number to that for identification purpose called as port
number and when we installed the apache tomcat then we have 8080 is default connector port and
default ip address is machine is 127.0.0.1 or localhost

There are two types of port number


____________________________________________________________________________
Connector port: connector port means it used for start the server
Shutdown port: it is used for stop the server execution
If we want to check your server is running or not then you can check from services of computer

If we found apache tomcat running in services consider your server installed properly and in running
stage.

http://localhost:9090/
If we get following screen we can consider server running properly

2. SET CATALINA_HOME path


_____________________________________________________________________________
CATALINA means tomcat and CATALINA_HOME tomcat root folder directory where we installed it.

How to set the CATALINA_HOME path


_______________________________________________________________________
Search menu --- advanced system setting ---- click on environmental variable ---- select system variable
----- click on new button --- variable name =(CATALINA_HOME) and variable value=path of tomcat where
we installed it (e.g : C:\Program Files\Apache Software Foundation\Tomcat 9.0)

3. SET servlet-api.jar class path


____________________________________________________________________
Q. what is servlet-api.jar?
_________________________________________________________________
servlet is external technology of java and use for develop the web application so servlet packages not
available in JDK setup so servlet packages present in servlet-api.jar and this file present in tomcat\lib
folder and if we develop any application using text editor and if we want to use any we required to set
classpath of .jar in environmental variable
How to setup the class path of servlet-api.jar file
_______________________________________________________________________________
If we want to set the class path of servlet-api.jar or any .jar we have to use following steps.

Start menu ----- search ------view advanced system setting ----- click on environmental variable -----
select system variable option ----click on new button ---- variable name =CLASSPATH and variable value
= servlet-api.jar where it is present e.g. c:\program files\tomcat\lib\servlet-api.jar

Q. what is difference between class path and path?


Classpath help us to access .jar file globally in system and path help us to access .exe file in system
globally.

4. Create Sample application: if we want to work with servlet we need to write minimum following
code.

5. Create Standard folder provided by apache tomcat to us


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class TestServ extends HttpServlet
{ public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{ response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("good morning");
}
}
Code description
import javax.servlet.*;
import javax.servlet.http.*;
_________________________________________________________________
In this package contain all classes and interfaces required for servlet
import java.io.*: In Servlet we use PrintWriter class for display the output on web page or send
response at client side and PrintWriter is member of java.io package.

public class TestServ extends HttpServlet : Here HttpServlet is a member of javax.servlet.http.* package
and it is abstract class and it is used for generate or create dynamic web page and we inherit HttpServlet
in TestServ class means TestServ is also web page in terms of servlet.
Internally : HttpServlet child of GenericServlet class and GenericServlet is a implementer class of Servlet
interface.

public void doGet(HttpServletRequest request,HttpServletResponse response): this method is used for


accept request send by client and send response to client using HttpServletRequest and
HttpServletResponse interfaces.

response.setContentType("text/html"): response is a member of


javax.servlet.http.HttpServletResponse and setContentType() is method of HttpServletResponse and this
method decide in which format response send to client and by default it is text/html.

PrintWriter out=response.getWriter(): here response is a member of HttpServletResponse and


getWriter() method of HttpServletResponse and this method return reference of PrintWriter and
PrintWriter is a class from java.io package which is used for display the output on web page using
println() method means we can say println() method generate response on web page in the form html

6. Create Standard folder structure provided by apache to us.


____________________________________________________________________________________
Apache tomcat provide the some standard folder for manage the web application

So we create folder structure you can save your servlet file in classes folder under WEB-INF
As per our example create class name as TestServ.java

7. Compile your servlet program


8. Create Web.xml file and configure servlet
___________________________________________________________________________
web.xml file is known as deployment descriptor file means this file is used for configure your servlet ,
context paramerter , config parameter etc
If we think about servlet you can configure servlet in file like as

web.xml file
<servlet>
<servlet-name>name of servlet</servlet-name>
<servlet-class>class name of servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>name of servlet</servlet-name>
<url-pattern>/urlname</url-pattern>
</servlet-mapping>

<servlet-name>name of servlet</servlet-name>: servlet-name indicate reference of servlet class


<servlet-class>class name of servlet</servlet-class>: it is class name whose object created by servlet
container i.e tomcat
<url-pattern>/urlname</url-pattern>: url pattern indicate it is link for call servlet to end user or url for
send request to servlet

Example of web.xml file


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">

<servlet>
<servlet-name>t</servlet-name>
<servlet-class>TestServ</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>t</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
9. Deploy servlet application on server
___________________________________________________________
if we want to deploy your servlet program on server we have following steps
a) open browser
b) type the following type of url
http://localhost:portnumber/projectname/urlname
Example: http://localhost:9090/demo/test

How to Create Servlet Application by using Eclipse


_____________________________________________________________________________
Steps to create servlet program by using eclipse
1. Open eclipse
2. Create Dynamic web project
file --- new --- other --- web --- dynamic web project --- click on next button --- give project name ---
click on next and select checkbox for web.xml and click on finish button

Note: once we create project using eclipse then we get following folder structure
3. Create package under src
4. Create Servlet under created package
right click on servlet --- select new option --- select other --- web --- select servlet option --- give
servlet class name --- click on next button ---- select url pattern ----

Example with source code


package org.techhub;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
/**
* Servlet implementation class FirstTest
*/
/*
* <serlvet>
* <servlet-name>f</servlet-name>
* <servlet-class>org.techhub.FirstTest</servlet-classs>
* </servlet>
* <servlet-mapping>
* <servlet-name>f</servlet-name>
* <url-pattern>/first</url-pattern>
* </servlet-mapping>
*/
@WebServlet("/first")
public class FirstTest extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<h1>Good Morning</h1>");
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
5. Run application or deploy application on server

How to create servlet by using maven?


_______________________________________________________________
Q. What is maven?
______________________________________________________________________
Maven is POM based tool here POM stands project object model and it is used for download the
required libraries/jar for application from internet just we required add some maven dependencies.
Dependencies are the some XML tags which represent the jar package and jar version when we add
these dependencies in pom.xml file and save project then maven automatically download the jar as per
the dependencies.

How to create maven project using eclipse


_____________________________________________________________________________
file -- new --- other -- maven --- maven project --- click on next -- click on next ---
select maven-archetype-webapp artifactid --- click on next button -- provide groupid means package
and artifactid means project name --- click on finish
Once we create project we get following folder structure from maven

Once we create project then open pom.xml and add dependencies tag in it.

Example:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

</dependencies>
Add the following dependency for servlet library
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

3. Create Servlet
package org.techhub;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
/**
* Servlet implementation class FirstTest
*/
@WebServlet("/ftest")
public class FirstTest extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("Second application");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
4. Run the application

Example: WAP to create servlet and calculate the addition of two values.
package org.techhub;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/add")
public class AddServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
int a=100,b=200,c;
c=a+b;
out.println("<h1>Addition is "+c+"</h1>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
}
If we think about above code we calculate the addition two fix values we want to accept the input from
keyboard and after that calculate addition of two values.

If we want to accept the input in web application we need to use HTML form elements means we need
to create html page with two textboxes and one button with form tag and submit html form to servlet
and servlet accept the input request from html form and process on it and generate addition value as
response to end user

How to submit HTML form to servlet


____________________________________________________________________
If we want to submit HTML form to servlet we have some following steps.

1. Create Dynamic web project


2. Create HTML page under webapp folder and design page with two textbox with submit button
right click on web app ---- select new ---- select html --- give filename --- click on next and click on
finish.

Example: add.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
input{
width:400px;
height:40px;

}
</style>
</head>
<body>
<center>
<input type='text' name='first' value=''/><br/><br/>
<input type='text' name='second' value=''/><br/><br/>
<input type='submit' name='s' value='Calculate Addition'/><br/><br/>

</center>
</body>
</html>
Output

3. Create Servlet
package org.calc;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/add")
public class AddServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("I am servlet");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
4. Submit HTML form as request to servlet or provide communication between html form and servlet
_____________________________________________________________________________________
if we want to provide communication between html form and servlet we have form tag in HTML

Syntax: <form name=’formname’ action=’servlet url’ method=’GET/POST’ enctype=’application/www-


url-encoded or multipart/form-data’>

form tag: form tag is used send request from HTML page to server side or it is used for collect requested
data from client and send to server

Attributes of form tag


name=’formname’: this attribute indicate form name and it is identity of form at server side or JS code
action=’servlet url’ : here action indicate the server side URL name or server side page url where we
want to send request
method: method indicate the how to send request to server
GET: if we use the GET method then all request form data visible in browser address bar
in the form name and value pair
means get is not secure method but get help us to work with URL rewriting and generate dynamic URL
data
Means we can say get method send requested data using URL
POST: if we use the POST method then request data not display in browser address bar and request
send via body the of the page and post method normally recommended in file uploading.

enctype=’application/www-url-encoded or multipart/form-data’: we will discuss in file uploading


example.

5. Once you submit form your form then you can accept form data at server side using Servlet
If we want to accept form data using servlet at server side we have doGet() or doPost() method present
in servlet class and doGet() and doPost() contain HttpServletRequest interface which help us to or
provide some method to us for access form data.

String getParameter(String htmlFormControlName): this method accept the html form control name
mention in html page and return its value in the form of string and if name found then return null

Complete source code


____________________________________________________________________________________
add.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
input{
width:400px;
height:40px;

}
</style>
</head>
<body>
<center>
<form name='frm' action='add' method='GET'>
<input type='text' name='first' value=''/><br/><br/>
<input type='text' name='second' value=''/><br/><br/>
<input type='submit' name='s' value='Calculate Addition'/><br/><br/>
</form>
</center>
</body>
</html>

AddServ.java
package org.calc;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/add")
public class AddServ extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String f=request.getParameter("first");
String s=request.getParameter("second");
int c=Integer.parseInt(f)+Integer.parseInt(s);
out.println("<h1>Addition is "+c+"</h1>");//response generate from server and display on
//browser or on client
}

protected void doPost(HttpServletRequest request,


HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

Example: Design registration page using HTML and submit to server and save in database
1. Create Dynamic web project & two jar or maven dependency a. servlet-api.jar 2.mysql-
connector.jar
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>

</dependencies>
2. Create Table in database
mysql> create table register(rid int(5) primary key auto_increment,name varchar(200),email
varchar(200),contact varchar(200));
Query OK, 0 rows affected, 1 warning (0.10 sec)
3. Design HTML page with form
style.css
@charset "ISO-8859-1";
.control{
width:400px;
height:40px;

}
register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="CSS/style.css"/>
</head>
<body>
<input type='text' name='name' value='' class='control' /><br/><br/>
<input type='text' name='email' value='' class='control' /><br/><br/>
<input type='text' name='contact' value='' class='control' /><br/><br/>
<input type='submit' name='s' value='Register' class='control' /><br/><br/>
</body>
</html>

4. Create Servlet
package org.regapp;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/reg")
public class RegisterServ extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("I am servlet");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}

}
5. Submit HTML form to servlet and accept form data in servlet
6. Write JDBC code in servlet and save form data in database table
Complete source code servlet
package org.regapp;
import java.sql.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@WebServlet("/reg")
public class RegisterServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String n=request.getParameter("name");
String e=request.getParameter("email");
String c=request.getParameter("contact");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn=DriverManager.getConnection
("jdbc:mysql://localhost:3306/testoctjdbc","root",
"root");
if(conn!=null) {
PreparedStatement stmt;
stmt=conn.prepareStatement("insert into register values('0',?,?,?)");
stmt.setString(1,n);
stmt.setString(2,e);
stmt.setString(3, c);
int value=stmt.executeUpdate();
if(value>0) {
out.println("User Registration Success........");
}
else {
out.println("Some problem is there..............");
}
}
else {
out.println("<h1>Data is not connected");
}
}
catch(Exception ex) {
out.println("Error is "+ex);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Following Diagram indicate complete execution of above example
Example: we want to sign up and sign in module we want to login page and when user register link then
we want to redirect user on registration page and when user fill data on registration page and submit
then user data should save in database as registration data and when open the login page and input
username and password then we want to verify user credential like as username and password in
database table and if username and password present in database table then show the message
welcome user and if username and password not present in database table then show message invalid
username and password.
After click on register here link

User fill registration data

After registration data save in register table


Login page to user

style.css
@charset "ISO-8859-1";
input{
width:400px;
height:40px;
}
table{
}
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="CSS/style.css"/>
</head>
<body>
<br/><br/>
<form name='frm' action='validatelogin' method='POST'>
<center>
<input type='text' name='name' value='' /><br/><br/>
<input type='password' name='pass' value=''/><br/><br/>
<input type='submit' name='s' value='Login'/>
<br/><br/>
<a href='register.html'>Register Here</a>
</center>
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="CSS/style.css"/>
</head>
<body>
<br/><br/>
<form name='frm' action='reg' method='POST'>
<table>
<tr><td><input type='text' name='name' value=''/></td>
<td><input type='text' name='email' value=''/></td></tr>
<tr><td><input type='text' name='contact' value=''/></td>
<td><input type='text' name='username' value=''/></td></tr>
<tr><td><input type='text' name='password' value=''/></td>
<td><input type='submit' name='s' value='Register'/></td></tr>
</table>
</form>
</body>
</html>

RegServ.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/reg")
public class RegServ extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String n=request.getParameter("name");
String e=request.getParameter("email");
String c=request.getParameter("contact");
String u=request.getParameter("username");
String p=request.getParameter("password");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testoctjdbc", "root", "root");
if(conn!=null) {
PreparedStatement stmt=conn.prepareStatement("insert into register
values('0',?,?,?,?,?)");
stmt.setString(1, n);
stmt.setString(2, e);
stmt.setString(3, c);
stmt.setString(4, u);
stmt.setString(5, p);
int value=stmt.executeUpdate();
if(value>0) {
out.println("<h1>Registration Success...........</h1>");
}
else {
out.println("<h1>Registration Failed............</h1>");
}
}
else {
out.println("DB Not Connected");
}
}
catch(Exception ex) {
out.println("Error is "+ex);
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
ValiateServ.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/validatelogin")
public class ValidateServ extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String un=request.getParameter("name");
String up=request.getParameter("pass");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testoctjdbc", "root", "root");
if(conn!=null) {
PreparedStatement stmt=conn.prepareStatement("select *from register
where username=? and password=?");
stmt.setString(1,un);
stmt.setString(2, up);
ResultSet rs=stmt.executeQuery();
if(rs.next()) {
out.println("<h1>Welcome user in application</h1>");
}
else {
out.println("<h1>Invalid username and password</h1>");
}
}
else {
out.println("<h1>DB Not Conencted</h1>");
}
}
catch(Exception ex) {
out.println("error is "+ex);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
RequestDispatcher interface
________________________________________________________________________________
RequestDispatcher interface is used for call one servlet from another servlet or include the another page
content in servlet means using a RequestDispatcher we can perform servlet chaining

Steps to work with RequestDispatcher interface


__________________________________________________________________________________
1. add javax.servlet.* and javax.servlet.http.* package
________________________________________________________________________________
import javax.servlet.*;
import javax.servlet.http.*;
2. Create reference of RequestDispatcher interface
_______________________________________________________________________________
If we want to create reference of RequestDispatcher interface we have getRequestDispatcher() method
of HttpServletRequest.

Syntax: RequestDispatcher r=requestref.getRequestDispatcher(String url): this method can accept the


url which we want to forward or include in servlet.

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ValidateServ extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
RequestDispatcher r=request.getRequestDispatcher("welcome.html");
}
}
3. Call its forward () and include() methods
_____________________________________________________________________
This method is used for forward the page from servlet and include is used for include another page
content in servlet.

void forward(HttpServletRequest,HttpServletResponse): this method can forward the page from


servlet
void include(HttpServletRequest,HttpServletResponse): this method can include another page content
in servlet.

Complete source
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form name='frm' action='valid' method='POST'>
<input type='text' name='username' value=''/><br/><br/>
<input type='password' name='password' value=''/><br/><br/>
<input type='submit' name='s' value='Login Here'/>
</form>
</body>
</html>

ValidateServ.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/valid")
public class ValiateServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("admin")) {
RequestDispatcher r = request.getRequestDispatcher("welcome.html");
r.forward(request, response);
} else {
RequestDispatcher r = request.getRequestDispatcher("login.html");
r.include(request, response);

out.println("<h1>Invalid username and password</h1>");


}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
welcome.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Welcome in application</h1>
</body>
</html>

Session Management
__________________________________________________________________________
Q. what is session?
____________________________________________________________________
Session is communication period between client and server over the network or it is process to maintain
the transaction activity of user from login to logout.

Q. Why use session or what is benefit of Session?


____________________________________________________________________________________
1. To maintain the privacy of user data in web application:
Example: suppose consider if we think about banking application and if user login to bank application by
using particular account then user can see balance that particular account not others.

Suppose if we are working on online examination portal and if we provide login to student and provide
facility to view result at student side then we can show the result to student in his own account means
one student cannot see the results of another students
Means we can say we can provide the security to use data or privacy to user data

2. To store data temporary at client side


3. To provide security to user
4. To Count Number of login user on web application etc

Note: http is stateless protocol means every request of client consider as new client by the server so
when same client send multiple request then server consider there is multiple client so if we want to
identify the request come from same client or not then we can use session means when we implement
the session then server create one session id and store session id in server side and client header and
when client revisit to server with request then server check client contain session id of not if server
found session in client header consider it is existing client otherwise consider it is new client called as
stateful protocol means http help us to convert stateless protocol to stateful protocol.
Note: every user has different session object at server side means every user has different session.
How to implement the session practically in servlet
________________________________________________________________________
If we want to implement the session practically in servlet we have following ways
1. Using HttpSession interface
2. Using Cookies
3. Using URL Rewriting
4. Using Hidden Field.

How to implement session by using HttpSession interface


__________________________________________________________________________
Steps to work with HttpSession interface

1. Add javax.servlet.* and javax.servlet.http.* package in application.


import javax.servlet.*;
import javax.servlet.http.*;

2. Create reference of HttpSession interface


___________________________________________________________________
If we want to create reference of HttpSession interface we have getSession() method of
HttpServletRequest and this method return reference of HttpSession interface and getSession() is
overloaded method of HttpServletRequest.

Syntax: HttpSession ref =requestref.getSession(boolean): if we think about this method if we pass true
parameter in it then getSession() method create new session object otherwise use existing session
or
HttpSession ref=requestref.getSession(): this method can use the existing session created by
user.

Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SessionTest extends HttpServlet
{public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
HttpSession session=request.getSession(true);//session created.
}
}
3. Use its method to work with HttpSession interface
______________________________________________________________________
If we want to work with HttpSession interface we have some inbuilt methods provided by HttpSession to
us.

String getId(): this method can return session id generated by server for client and server generate
different session id for every client.

void setAttribute(Object key, Object value): this method can store data in session in the form of key
and value pair and key is unique and value may be duplicated.

Object getAttribute(Object key): this method can return data from session using its key and if key not
found return null value.

boolean isNew(): this method can check session is new or not if session is new return true otherwise
return false.

void invalidate(): this method can logout the session or invalid the user session

void setMaxInactiveInterval(int seconds): this method can decide the expiry period of session.
etc

Example: we want to design login page and when user submit login page to servlet then create new
session in servlet and show its session id.

Sample code
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
input{
width:400px;
height:40px;
border-radius:5px;
}
</style>
</head>
<body>
<center>
<form name='frm' action='create' method='POST'>
<input type='text' name='username' value=''/><br/><br/>
<input type='password' name='password' value=''/><br/><br/>
<input type='submit' name='s' value='Login'/>
</form>
</center>
</body>
</html>

CreateSessionServ.java
package org.techhub;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.*;
@WebServlet("/create")
public class CretaeSessionServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
HttpSession session=request.getSession(true);
String id=session.getId();
out.println("<h1>Session id "+id+"</h1>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

Example: we want to create login and submit to servlet and store data in session object and when user
click on view session then display the session data on another servlet.
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
input{
width:400px;
height:40px;
border-radius:5px;
}
</style>
</head>
<body>
<center>
<form name='frm' action='create' method='POST'>
<input type='text' name='username' value=''/><br/><br/>
<input type='password' name='password' value=''/><br/><br/>
<input type='submit' name='s' value='Login'/>
</form>
</center>
</body>
</html>

CreateSessionServ.java
package org.techhub;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.*;
@WebServlet("/create")
public class CretaeSessionServ extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
HttpSession session=request.getSession(true);
String id=session.getId();
out.println("<h1>Session id "+id+"</h1>");
String uname=request.getParameter("username");
String upass=request.getParameter("password");
session.setAttribute("u", uname);
session.setAttribute("p", upass);
out.println("<a href='view'>View Session Data</a>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ViewSessionData.java
package org.techhub;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/view")
public class ViewSessionData extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
HttpSession session=request.getSession();
//Object obj=session.getAttribute("u");
//String username=obj.toString();
String username=session.getAttribute("u").toString();
String password=session.getAttribute("p").toString();
out.println("<h1>Data from session is </h1>");
out.println("User name "+username+"<br>");
out.println("Password is "+password+"<br>");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

Assignment by using Session


__________________________________________________________________________________
we want to design application view and update profile here we want to design login page with username
, password and login button with registration link and when user click on register link then user should
redirect on registration page with field name,email,contact,username and password so store user data
in database and when user login then cross verify its username and password in database and if
username and password present in database then redirect user in application on viewprofile.html page
and when user click on view profile link then show the profile of login user or his own profile and user
should update own profile from his account.
style.css
@charset "ISO-8859-1";
input{
width:400px;
height:40px;
}
login.html
_________________________________________________________________________
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="CSS/style.css"/>
</head>
<body>
<form name='frm' action='valid' method='POST'>
<input type='text' name='username' value=''/><br/><br/>
<input type='text' name='password' value=''/><br/><br/>
<input type='submit' name='s' value='Login'/><br/><br/>
<a href='register.html'>Register</a>
</form>
</body>
</html>

register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="CSS/style.css" />
</head>
<body>
<form name='frm' action='reg' method='POST'>
<input type='text' name='name' value='' /><br />
<br /> <input type='text' name='email' value='' /><br />
<br /> <input type='text' name='contact' value='' /><br />
<br /> <input type='text' name='username' value='' /><br />
<br /> <input type='password' name='password' value='' /><br />
<br /> <input type='submit' name='s' value='Register' /><br />
<br />
</form>
</body>
</html>

RegisterServ.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
@WebServlet("/reg")
public class RegisterServ extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String name=request.getParameter("name");
String email=request.getParameter("email");
String contact=request.getParameter("contact");
String username=request.getParameter("username");
String password=request.getParameter("password");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testoctjdbc","root","root");
if(conn!=null) {
PreparedStatement stmt=conn.prepareStatement("insert into register
values('0',?,?,?,?,?)");
stmt.setString(1,name);
stmt.setString(2,email);
stmt.setString(3,contact);
stmt.setString(4,username);
stmt.setString(5, password);
int value=stmt.executeUpdate();
if(value>0) {
out.println("<h1>Registration Success.....................</h1>");
}
else {
out.println("<h1>Registration Failed..................</h1>");
}
}
else {
out.println("<h1>Database is not connected</h1>");
}
}
catch(Exception ex) {
out.println("Error is "+ex);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
ValidateServ.java
package org.techhub;

import java.io.IOException;
import java.sql.DriverManager;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.*;
@WebServlet("/valid")
public class ValidateServ extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String uname=request.getParameter("username");
String upass=request.getParameter("password");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testoctjdbc","root","root");
if(conn!=null) {
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select *from register where username='"+uname+"'
and password='"+upass+"'");
if(rs.next()) {
out.println("<h1>Login Success</h1>");
HttpSession session=request.getSession(true);
int userId=rs.getInt(1);
session.setAttribute("uid", userId);
RequestDispatcher r=request.getRequestDispatcher("viewprofile.html");
r.forward(request, response);
}
else {
RequestDispatcher r=request.getRequestDispatcher("login.html");
r.include(request, response);
out.println("<h1>Invalid login</h1>");
}
}
else {

}
}
catch(Exception ex) {
out.println("Error is "+ex);
}
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
Viewprofile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href='view'>View Login User Profile</a>
</body>
</html>
ViewUserProfile.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/view")
public class ViewUserProfile extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<h1>I can show the login user profile</h1>");
HttpSession session=request.getSession();
Object obj=session.getAttribute("uid");
int loginUserId=Integer.parseInt(obj.toString());
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testoctjdbc","root","root");
if(conn!=null) {
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select *from register where
rid="+loginUserId);
if(rs.next()) {
out.println("<table>");
out.println("<tr><td>Name</td><td>"+rs.getString(2)+"</td></tr>");
out.println("<tr><td>Name</td><td>"+rs.getString(3)+"</td></tr>");
out.println("<tr><td>Name</td><td>"+rs.getString(4)+"</td></tr>");
out.println("<tr><td>Name</td><td>"+rs.getString(5)+"</td></tr>");
out.println("<tr><td>Name</td><td>"+rs.getString(6)+"</td></tr>");
out.println("</table>");
}

}
else {

}
}
catch(Exception ex) {
out.println("Error is "+ex);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
Cookies
_________________________________________________________________________________
Cookie is part of session management means user has or every client has different cookies

Q. what is difference between Session Handling by using HttpSession interface and by using Cookies?
___________________________________________________________________________________
1. If we store data in HttpSession object then data stored temporary whenever browser is active or
running phase and when we store in cookies then data store for longer period if user close the browser.
2. HttpSession stores its data at server side and Cookies store data at client means in browser.

Note: if user disable the browser cookies then cookie work as HttpSession and cookie may be break the
user privacy so this major try to avoid storing important data in cookie or store by using encryption.

There are two types of cookies


_____________________________________________________________________________
1. Persistent cookies: persistent cookie means cookie data save after close the browser called as
persistent cookie means if we set the age of cookie called as persistent cookie.
2. Temporary Cookies: temporary cookies means cookie vanish when user close the browser

How to work with cookie


________________________________________________________________________________
Steps to work with cookie
__________________________________________________________________________
1. Create Cookie object
____________________________________________________________________
Cookie ref = new Cookie(String name/key,String value): we can store data in cookie in the form of
name and value pair

Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class SaveCookie extends HttpServlet


{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie c = new Cookie("u","ABC");

}
}
2. Set Age of cookie
__________________________________________________________________
Age decide the cookie storage period at client side or persistence period at client side
So if we want to set the age of cookie we have method name as void setMaxAge(int seconds);
Syntax: void setMaxAge(int seconds): set the age of cookies in seconds.

Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SaveCookie extends HttpServlet
{public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie c = new Cookie("u","ABC");
c.setMaxAge(60*60*24*365);
}
}
3. Send cookie from server to client as response
____________________________________________________________________
If we want to send cookie data from server to client we have addCookie() method of
HttpServletResponse

Syntax: void addCookie(Cookie): this method can send cookie object from server to client side.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class SaveCookie extends HttpServlet


{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie c = new Cookie("u","ABC");
c.setMaxAge(60*60*24*365);
response.addCookie(c);
}
}

Once server send cookie to client and when client revisit to server then server can read cookie data for
identify client and if server found cookie object as null then consider it is new client otherwise consider
it is existing client and if server want to read cookie data at server side we have method name as
getCookies() and getCookies() method return reference of Cookie [] array

Syntax:
Cookie ref[]= requestref.getCookies();

Cookie class provide some method to us for read cookie data

String getName(): this method is used for read cookie name


String getValue(): this method is used for read cookie data.

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ReadCookie extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie c[]=request.getCookies();
for(int i=0; i<c.length;i++)
{ out.println(c[i].getName()+"&nbsp;"+c[i].getValue()+"<br>");
}
}
}
Example with complete source code
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style>
input{
width:400px;
height:40px;
}
</style>
</head>
<body>
<center>
<form name='frm' action='save' method='POST'>
<input type='text' name='name' value=''/><br/><br/>
<input type='password' name='pass' value=''/><br/><br/>
<input type='submit' name='s' value='Login'/>
</form>
</center>
</body>
</html>

SaveCookie.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/save")
public class SaveCookie extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String username=request.getParameter("name");
String password=request.getParameter("pass");
Cookie c1 = new Cookie("u",username);
c1.setMaxAge(60*60*24*90);//3 months age
response.addCookie(c1);
Cookie c2 = new Cookie("p",password);
c2.setMaxAge(60*60*24*90);
response.addCookie(c2);
out.println("<a href='view'>View Cookie Data</a>");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
doGet(request, response);
}
}

ViewCookie.java

package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/view")
public class ViewCookie extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
Cookie c[]=request.getCookies();
out.println("<h1>Cookie Data is </h1>");
for(int i=0; i<c.length;i++)
{
out.println(c[i].getName()+"&nbsp;&nbsp;"+c[i].getValue()+"<br>");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

ServletContext and ServletConfig


______________________________________________________________________

Q. What is ServletContext?
__________________________________________________________________________
ServletContext is a object created at server side and it is known as application object means when we
deploy any application or project on server then internally tomcat container create one object for that
project at server side known as ServletContext or application object.

Note: if we think about above diagram we have tomcat or server and we consider we deploy two
projects in tomcat i.e online examination and online shopping means we have two contexts object
in tomcat because server create context object or application for project and we consider we have
online exam project access by 5 clients i.e a,b,c,d,e means we have 5 session object for online exam
Application and we consider online shopping has use by 3 clients so we consider it contain 3 session
objects.
Q. Why use ServletContext and What is benefit of ServletContext?
______________________________________________________________________________
1. Configure data in web.xml file and access in servlet
2. To share data common between all clients and servlets in application
Note: context data life present whenever server in running stage.

Configure data in web.xml file and access in servlet


______________________________________________________________________________
Some time we have some hard coded data or fix data and if we want to change data in future as per the
and if we configure data in servlet code then we required to perform changes in code so it is not
possible in real time whenever your application running on server so better way you can configure data
in web.xml file for context object and access data in servlet so when we want to modify data not need
to modify in source code just need to modify in web.xml file

How to configure data for context in web.xml file


__________________________________________________________________________________
If we want to configure data for context in web.xml file we have to use following syntax

<context-param>
<param-name>name of parameter</param-name>
<param-value>value of parameter</param-value>
</context-param>

Example:
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.cj.jdbc.Driver</param-value>
</context-param>

If we want to access this data in servlet we need to use ServletContext interface.


Steps to work with ServletContext interface
______________________________________________________________________________
1. add javax.servlet.* and javax.servlet.http.* package
________________________________________________________________________
import javax.servlet.*;
import javax.servlet.http.*;
2. Create reference of ServletContext
_____________________________________________________________________________
if we want to create reference of ServletContext we have getServletContext() method of GenericServlet
and GenericServlet is parent of HttpServlet.

Syntax: ServletContext context=this.getServletContext();


Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ContextParam extends HttpServlet


{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
ServletContext context=this.getServletContext();
}
}

3. Use its getInitParameter() method for access data


________________________________________________________________________
String getInitParameter(String paramName): this method can accept the parameter name and return
its value and if parameter name not found return null value.

Example with source code


________________________________________________________________________________
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.cj.jdbc.Driver</param-value>
</context-param>
</web-app>

Servlet Example
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/testparam")
public class ContextParamTestApp extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {

response.setContentType("text/html");
PrintWriter out=response.getWriter();
ServletContext context=this.getServletContext();
String paramValue=context.getInitParameter("driver");
out.println("driver value is "+paramValue);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

ServletConfig
______________________________________________________________________
ServletConfig is same like as ServletContext means ServletConfig help us configure data in web.xml file
and access in Servlet but the major difference between ServletContext and ServletConfig is
ServletContext is global all servlet in application and ServletConfig is local particular servlet means if we
initialize data in web.xml file for ServletContext then data is accessible in all servlet of application and if
we initialize data in web.xml file for ServletConfig then data is accessible only within particular servlet.

ServletConfig
_____________________________________________________________________________
ServletConfig is same like as ServletContext but the major difference is ServletContext data is accessible
in servlets and ServletConfig data is accessible within single servlet
Means we can say ServletContext is global object for all servlets and ServletConfig is local object for
particular servlet.

Steps to initialize data in ServletConfig


__________________________________________________________________________
1. Write the following tag in web.xml file for Configure for ServletConfig object.
__________________________________________________________________________
If we want to configure data for ServletConfig we have to write following tags in web.xml file

<servlet>
<servlet-name> name of servlet</servlet-name>
<servlet-class> classname of servlet</servlet-class>
<init-param>
<param-name>name of parameter</param-name>
<param-value> value of parameter</param-value>
</init-param>
</servlet>

Example:

<servlet>
<servlet-name>f</servlet-name>
<servlet-class>First</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/mysql</param-value>
</init-param>
</servlet>
Note: if we think about above code we initialize parameter only for First servlet means url parameter is
not accessible in another servlet because we configure within servlet tag of First servlet.

2. Create Servlet and Create reference of ServletConfig object


_________________________________________________________________________________
if we want to create reference of ServletConfig we have to call getServletConfig() method of
GenericServlet and we can access this method in HttpServlet because HttpServlet is child of
GenericServlet

Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class TestServ extends HttpServlet


{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{ response.setContentType("text/html");
PrintWriter out=response.getWriter();
ServletConfig config=this.getServletConfig();
}
}
3. Call getInitParameter() method of ServletConfig
_______________________________________________________________________
String getInitParameter(String paramName): this method can access the parameter name from
web.xml file and return its value.

Sample code
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class TestServ extends HttpServlet


{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException
{ response.setContentType("text/html");
PrintWriter out=response.getWriter();
ServletConfig config=this.getServletConfig();
String paramValue=config.getInitParameter("url");
out.println("<h1>Parameter value is "+paramValue+"</h1>");
}
}

Example: We want to Create Application with two servlets name as First and Second and configure data
in web.xml file for ServletContext object and configure for config in First servlet and see the results
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>ConfigContextApp</display-name>

<context-param>
<param-name>email</param-name>
<param-value>support@gmail.com</param-value>
</context-param>
<servlet>
<servlet-name>f</servlet-name>
<servlet-class>org.techhub.First</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/mysql</param-value>
</init-param>

</servlet>
<servlet-mapping>
<servlet-name>f</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>s</servlet-name>
<servlet-class>org.techhub.Second</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s</servlet-name>
<url-pattern>/second</url-pattern>
</servlet-mapping>
</web-app>

First.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class First extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("I am first servlet");
ServletContext context=this.getServletContext();
String contextData=context.getInitParameter("email");
out.println("<h1>Context data from web.xml "+contextData+"</h1>");
ServletConfig config=this.getServletConfig();
String configData=config.getInitParameter("url");
out.println("<h1>Config data from web.xml "+configData+"</h1>");

out.println("<br><a href='second'>Second</a>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

Second.java
package org.techhub;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Second extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("I am second servlet");
ServletContext context=this.getServletContext();
String contextData=context.getInitParameter("email");
out.println("<h1>Context data from web.xml "+contextData+"</h1>");
ServletConfig config=this.getServletConfig();
String configData=config.getInitParameter("url");
out.println("<h1>Config data from web.xml "+configData+"</h1>");

out.println("<br><a href='first'>First</a>");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
doGet(request, response);
}

You might also like