JDBCSERVLETJSP
JDBCSERVLETJSP
Own made
Video: 15
package com.jsp.jdbc;
import java.io.FileInputStream; Jdbcdata.properties
import java.io.IOException;
import java.sql.Connection; driver=com.mysql.cj.jdbc.Driver
import java.sql.DriverManager; url=jdbc:mysql://localhost:3306?user=root&password=root&useSSL=false
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Scanner;
System.getProperty("jdbc");
try {
FileInputStream fileinputstream = new FileInputStream("lib/jdbcdata.properties");
Properties properties = new Properties();
properties.load(fileinputstream);
Class.forName(properties.getProperty("driver"));
connection=DriverManager.getConnection(properties.getProperty("url"));
System.out.println("Enter id,name,salary");
int id = scanner.nextInt();
String name = scanner.next();
double salary =scanner.nextDouble();
preparedstatement.setInt(1, id);
preparedstatement.setString(2,name);
preparedstatement.setDouble(3,salary);
preparedstatement.executeUpdate();
System.out.println("Data Inserted");
e.printStackTrace();
}
finally {
try {
if(preparedstatement!=null) preparedstatement.close();
if(connection!=null)connection.close();
scanner.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.jsp.jdbc;
WAP to insert multiple data entered by user?
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection; Jdbcdata.properties
import java.sql.DriverManager; driver=com.mysql.cj.jdbc.Driver
import java.sql.PreparedStatement; url=jdbc:mysql://localhost:3306?user=root&password=root&useSSL=false
import java.sql.SQLException;
import java.util.Properties;
import java.util.Scanner;
System.getProperty("jdbc");
try {
FileInputStream fileinputstream = new FileInputStream("lib/jdbcdata.properties");
Properties properties = new Properties();
properties.load(fileinputstream);
Class.forName(properties.getProperty("driver"));
connection = DriverManager.getConnection(properties.getProperty("url"));
preparedstatement.setInt(1, id);
preparedstatement.setString(2, name);
preparedstatement.setDouble(3, salary);
preparedstatement.executeUpdate();
System.out.println("Data Inserted");
System.out.println("Press 1 to add one more record or press any other number for exit:");
//record=scanner.nextInt();
} while (scanner.nextInt() == 1);//while(record==1);
e.printStackTrace();
}
finally {
try {
if (preparedstatement != null)
preparedstatement.close();
if (connection != null)
connection.close();
scanner.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Output:
Enter id,name,salary
3
ram
7000
Data Inserted
Press 1 to add one more record or press any other number for exit:
1
Enter id,name,salary
4
laxman
6000
Data Inserted
Press 1 to add one more record or press any other number for exit:
8
Video: 16
PreparedStatement:
prepareStatement():
Interface Interface
Statement Connection
Methods: createStatement:
return :Statement Object
execute(String queries)
executeUpdate(String queries)
executeQuery(String queries)
extends
Interface
PreparedStatement
Methods:
execute()
executeUpdate()
executeQuery()
execute(String queries)
executeUpdate(String queries)
executeQuery(String queries)
Interface
Connection
prepareStatement(String queries):
return: PreaparedStatement Object
PlaceHolder in PreparedStatemet:
It is a method of PreparedStatement.
It is used for setting the PlaceHolder value.
Example:
setInt(1,254)
setString(2,”kdjadj”)
package com.jsp.jdbc;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import java.util.Scanner;
System.getProperty("jdbc");
try {
FileInputStream fileinputstream = new FileInputStream("lib/jdbcdata.properties");
Properties properties = new Properties();
properties.load(fileinputstream);
Class.forName(properties.getProperty("driver"));
connection=DriverManager.getConnection(properties.getProperty("url"));
e.printStackTrace();
}
Jdbcdata.properties
}
} driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306?user=root&password=root&useSSL=false
WAP to insert multiple record or data?
Benefit of PreaparedStatement:
package com.jsp.jdbc;
Compilation will be 1 time and multiple time
import java.io.FileInputStream; execute for multiple data insertion
import java.io.IOException;
It reduces compilation Time.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException; Jdbcdata.properties
import java.util.Properties;
import java.util.Scanner; driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306?user=root&password
public class MultipleInsertionbyPreparedStatement { =root&useSSL=false
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Connection connection = null;
PreparedStatement preparedstatement = null;
System.getProperty("jdbc");
try {
FileInputStream fileinputstream = new FileInputStream("lib/jdbcdata.properties");
Properties properties = new Properties();
properties.load(fileinputstream);
Class.forName(properties.getProperty("driver"));
connection = DriverManager.getConnection(properties.getProperty("url"));
preparedstatement.executeUpdate();
System.out.println("DataInserted");
System.out.println("Enter 1 for inserting one more data: ");
} while (scanner.nextInt() == 1);
e.printStackTrace();
}
Output:
Enter id, name , salary
4
farahan
79000
DataInserted
Enter 1 for inserting one more data:
1
Enter id, name , salary
5
krish
777777
DataInserted
Enter 1 for inserting one more data:
10
package com.jsp.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false&user=root&password=root");
cn.setAutoCommit(false); // This will turn off AutoCommit
int r = 0;
String qu = "insert into jspiders.student values(?,?,?)";
pst = cn.prepareStatement(qu);
do {
System.out.println("Enter id ,name,marks"); Output:
} while (r == 1);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
finally {
try {
if(pst!=null) pst.close();
if(cn!=null) cn.close();
scn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Video: 17
Create Project to which does insert, update, delete and display record:
1. Create Java Project : ctrl+N or right click –go to New ---- select Project
Select Java Project
Click to Next
Project Name: CURDOPERATION
select Finish
select Don’t Create for Module name
Select No for Open the Java Perspective?
2. Create lib folder: select the CURDOPERATION project: ctrl+N or right click---- go to New ----select Folder----select
CURDOPERATION -------Folder name: lib------Finish.
3. Copy the jar file: mysql-connector-j-8.0.32.jar
4. Paste to lib folder of CURD OPERATION
5. Select mysql-connector-j-8.0.32.jar ---------right click ------- go to Build Path------ select Add to Build Path
Or
Select mysql-connector-j-8.0.32.jar-------- right click------- go to Build Path------- configure Build Path------- select Class Path--
--Add jars...--------select mysql-connector-j-8.0.32.jar-----ok-----apply and close
Update query: update simpleproject.employee set columnName=new value,columnName=new value…….. where condition;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public DMLOperation() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false", "root",
"root");
e.printStackTrace();
}
}
preparedstatement.setInt(1, scanner.nextInt());
preparedstatement.setString(2, scanner.next());
preparedstatement.setDouble(3, scanner.nextDouble());
preparedstatement.executeUpdate();
System.out.println("data inserted");
System.out.println("Enter 1: for one more data entery or other number for exit");
} while (scanner.nextInt() == 1);
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println(
"Enter 1: id Updation" + "\r\n" + "Enter 2:name Updation" + "\r\n" + "Enter 3:salary
Updation");
int update = scanner.nextInt();
try {
if (update == 1) {
} else if (update == 2) {
preparedstatement = connection
.prepareStatement("update simpleproject.employee set name =? where id =?");
System.out.println("Enter new name:");
preparedstatement.setString(1, scanner.next());
preparedstatement.setInt(2, id);
} else if (update == 3) {
preparedstatement = connection
.prepareStatement("update simpleproject.employee set salary =? where id =?");
System.out.println("Enter new salary:");
preparedstatement.setDouble(1, scanner.nextDouble());
preparedstatement.setInt(2, id);
}
preparedstatement.executeUpdate();
System.out.println("Record Updated");
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
preparedstatement = connection.prepareStatement("delete from simpleproject.employee where id =?");
System.out.println("Enter the id for delete");
preparedstatement.setInt(1, scanner.nextInt());
preparedstatement.executeUpdate();
System.out.println("Record deleted");
} catch (SQLException e) {
e.printStackTrace();
}
e.printStackTrace();
}
}
package com.jspider.dml;
import java.util.Scanner;
if (operation == 1)
dmloperation.insertRecord();
else if (operation == 2)
dmloperation.updateRecord();
else if (operation == 3)
dmloperation.deleteRecord();
else
System.out.println("invalid option selected!!!!");
dmloperation.displayAll();
}
Enter 1 for insert data
Enter 2 for update data
Enter 3 for Delete Data
1
id name salary
1 laxman 4500.0
2 raman 6200.0
3 kiran 7500.0
Enter employee : id , name,salary
4
prasant
4000
data inserted
Enter 1: for one more data entery or other number for exit
3
id name salary
1 laxman 4500.0
2 raman 6200.0
3 kiran 7500.0
4 prasant 4000.0
Enter 1 for repeat or Enter any number for exit:
1
Enter 1 for insert data
Enter 2 for update data
Enter 3 for Delete Data
2
id name salary
1 laxman 4500.0
2 raman 6200.0
3 kiran 7500.0
4 prasant 4000.0
Enter id of the employee who's record you want to update
2
Enter 1: id Updation
Enter 2:name Updation
Enter 3:salary Updation
2
Enter new name:
ram
Record Updated
id name salary
1 laxman 4500.0
2 ram 6200.0
3 kiran 7500.0
4 prasant 4000.0
Enter 1 for repeat or Enter any number for exit:
1
Enter 1 for insert data
Enter 2 for update data
Enter 3 for Delete Data
3
id name salary
1 laxman 4500.0
2 ram 6200.0
3 kiran 7500.0
4 prasant 4000.0
Enter the id for delete
4
Record deleted
id name salary
1 laxman 4500.0
2 ram 6200.0
3 kiran 7500.0
Enter 1 for repeat or Enter any number for exit:
10
Stored procedure: Video: 18
Statement
extends
PreparedStatement
extends
CallableStatement
CallableStatement :
prepareCall() :
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false","root", "root");
callablestatement=connection.prepareCall("call jspiders.selectingAll");
resultset=callablestatement.executeQuery();
System.out.println("sid"+"\t"+"sname"+"\t"+"marks");
while(resultset.next())
System.out.println(resultset.getInt("sid")+"\t"+resultset.getString("sname")+"\t"+resultset.getDouble("marks"));
e.printStackTrace();
}
}
Output:
sid sname marks
1 anant 80.0
2 mark 50.0
3 priyank70.0
4 roshan 82.55
5 sunil 50.0
6 ganesh 99.5
7 jack 71.0
package com.jsp.jdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false","root", "root");
callablestatement=connection.prepareCall("call jspiders.insertRecord");
callablestatement.executeUpdate();
System.out.println("data inserted");
e.printStackTrace();
}
This program is not recommended because
} query is tight coupling
Output: data inserted
}
package com.jsp.jdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Scanner;
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false","root", "root");
callablestatement=connection.prepareCall("call jspiders.insertRecord(?,?,?,?,?)");
System.out.println("Enter id, name, marks, mobile,address ");
callablestatement.setInt(1, scanner.nextInt());
callablestatement.setString(2, scanner.next());
callablestatement.setDouble(3, scanner.nextDouble());
callablestatement.setLong(4, scanner.nextLong());
callablestatement.setString(5, scanner.next());
Output:
callablestatement.executeUpdate(); Enter id, name, marks, mobile,address
11
System.out.println("data inserted"); sita
58
} catch (ClassNotFoundException | SQLException e) { 8249633792
delhi
e.printStackTrace(); data inserted
}
}
WAP to fetch the data without using ResultSet? Video: 19
package com.jsp.jdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Scanner;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false", "root",
"root");
callablestatement.setInt(1, scanner.nextInt());
callablestatement.registerOutParameter(2, Types.DECIMAL);
callablestatement.registerOutParameter(3, Types.VARCHAR);
callablestatement.registerOutParameter(4, Types.BIGINT);
callablestatement.executeQuery();
}
Batch file : Java Prgm Video: 20
It is a file contains set of queries which are going to execute at one shot. 10 queries add to
Batch file will not visible for you it is like a virtual file which contains set of queries. batch file
Batch file works only for DML queries.
In case of multiple (DML) queries instead of executing the query we push the query into Batch file.
Once every queries is pushed then we execute the batch file Database
addBatch():
executeBatch():
int[] : Each element of the array represent number of rows got effected by each query in the batch batch file. 10 queries ---1 time Compilation
and 10 time execution.
package com.jsp.jdbc;
import java.io.FileInputStream; Batch file:
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
10 queries ---1 time compilation
import java.sql.PreparedStatement; and 1time execution.
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Properties;
import java.util.Scanner;
System.getProperty("jdbc");
try {
FileInputStream fileinputstream = new FileInputStream("lib/jdbcdata.properties");
Properties properties = new Properties();
properties.load(fileinputstream);
Class.forName(properties.getProperty("driver"));
connection = DriverManager.getConnection(properties.getProperty("url"));
int arr[]=preparedstatement.executeBatch();
System.out.println(Arrays.toString(arr)); This will execute all the queries present in Batch
System.out.println("check the database:");
file in single execution.
e.printStackTrace();
}
}
}
Output:
getMataData():
package com.jsp.jdbc;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false", "root",
"root");
databasemetadata = connection.getMetaData();
System.out.println("DataBase Information:");
System.out.println("DataBase Name:" + databasemetadata.getDatabaseProductName());
System.out.println("DataBase version:Major-" + databasemetadata.getDriverMajorVersion() + "\t"
+ "DataBase version: Minor" + databasemetadata.getDriverMinorVersion());
System.out.println("URL=" + databasemetadata.getURL());
System.out.println("Driver Name=" + databasemetadata.getDriverName());
System.out.println("Driver Version Major=" + databasemetadata.getDriverMajorVersion() + "\t" +
"Minor="+ databasemetadata.getDriverMinorVersion());
e.printStackTrace();
}
Output:
}
DataBase Information:
} DataBase Name:MySQL
DataBase version:Major-8 DataBase version: Minor0
URL=jdbc:mysql://localhost:3306?useSSL=false
Driver Name=MySQL Connector/J
Driver Version Major=8 Minor=0
ResultSetMetaData: (very rarely used)
video: 21
It is used to get meta data on resultant table (not from database)
It is an interface present in java.sql package
We can create Object of ResultSetMetaData by getMetaData()
It is used to get information like Table Name, number of columns, column names, column data types etc.
getMetaData():
package com.jsp.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306?useSSL=false", "root",
"root");
statement = connection.createStatement();
resultsetmetadata = resultset.getMetaData();
System.out.println("ColumnNames"+"\t"+"datatypes"+"\t"+"aliasname");
for (int i = 1; i <= columncount; i++) {
System.out.println(resultsetmetadata.getColumnName(i)+"\t\t"+resultsetmetadata.getColumnTyp
eName(i)+"\t\t"+resultsetmetadata.getColumnLabel(i));
}
e.printStackTrace();
}
} Output:
}
Resultant Table Information:
Number columns:2
ColumnNames datatypes aliasname
id INT employeeid
salary DECIMAL monthlysalary
Video=22
Server:
It is a machine which accepts the user request, process the request and get back some response.
Server also manages the resource present in server machine.
There are 2 type of server:
1. Web server
2. Application server Server:
Client
Web server: It can only process web request that is http request. app
Application server: It act like web server as well as it can run big Browser app
Application like EJB (Enterprise Java Bean).
app
Video: 22_A.java_20.07.21_REC
Video: 23
Servlet :
Classes of javax.servlet
GenericServlet
ServletException
Server
http request
container
Client
Browser
App1
Configuration file
web.xml
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void destroy() {
// TODO Auto-generated method stub
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Hi this is printed in console");
PrintWriter out = arg1.getWriter();
out.println("<html><body><h1>Hi good Morning</h1></body></html>");
example.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="hi"> click here </a>
</body>
</html>
web.xml
OR
3. destroy()----->This method executed just before removing the Servlet object(during undeployment of Servlet/ shut
down the server)
Syntax: public void destroy(){}
4. getServletInfo()-----> It is used to give information about the servlet
Syntax: public String getServletInfo(){}
5. getServletConfig()-------> It is used for getting the ServletConfig object
Syntax: public ServletConfig getServletConfig(){}
Note:
Servlet Life cycle (very important):
In a server N number of
It is the activity performed during the execution of Servlet application can be present.
In an application we can have N
Stages:
number of Servlet.
1. instantiation phase
2. initialization phase
3. service phase
4. Destroy phase
1. Instantiation phase: Here object of Servlet class is created by container.
Whenever Servlet receive first request then this phase will be executed once.
4. Destroy phase: this phase executes when server will shutdown/undeployment of application done.
Here destroy() will be called just before removing servlet object.
init()
destroy()
xml:
It is a configuration file.
By using this we can configure the application.
Here we use some custom tags to configure the resource.
All web application must has a one xml file name as web.xml
web.xml:
Servlet Mapping: It helps the container to pass the request to a particular servlet.
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
Video: 25
GenericServlet:
Request (object):
tellfortune Container
Client
implements
extends
getWriter():
<welcome-file-list>
<welcome-file>Home.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>fortune</servlet-name>
<servlet-class>com.example.FortuneTeller</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fortune</servlet-name>
<url-pattern>/tellfortune</url-pattern>
</servlet-mapping>
</web-app>
Home.html
If this both URL Pattern name is not same then
<!DOCTYPE html>
it will give: HTTP Status 404 –Not Found
<html>
<head> (Generally we say 404-Error)
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
String[] arr = { "your day is going to be awesome", "you will become very famous in future",
"you will get job soon if you work hard", "you will get married soon" };
Random random = new Random();
int randomnumber=random.nextInt(arr.length-1);
//System.out.println(arr[randomnumber]);
This will print in the console
Go to Browser: http://localhost:8080/Webapps2 ------- Enter or select Webapps2 ---right click---Run As---Run on Server
This will randomly generate to client
by go back to: Click Here
Click the -----Window-----Web Browser-------then you can select browser i.e. Chrome
The above process need only one time for changing Browser
How to generate Random Number?
Video: 26
Request (Object):
url:
data:us=ram Container
Client
Response (Object)
Web.xml
getParameter():
It is a method of ServletRequest interface used for extracting value from request object.
Syntax: public String getParameter(String key){}
Updating the previous Program: Home.html, FortuneTeller.java
Home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style type="text/css">
input[type="submit"] {
margin-top: 10px;
}
</style>
</head>
<body>
<div>
<form action="tellfortune">
<div>
Name:<input type="text" name="us">
</div>
<div>
<input type="submit" value="get Fortune">
</div>
</form>
</div>
</body>
</html>
FortuneTeller.java
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = arg0.getParameter("us");
String[] arr = { "your day is going to be awesome", "you will become very famous in future",
"you will get job soon if you work hard", "you will get married soon" };
Random random = new Random();
int randomnumber = random.nextInt(arr.length - 1);
// System.out.println(arr[randomnumber]);
}
Create: Dynamic Web Project(Webapps3)
Video: 27
Create: web.xml
Create: home.html
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_3_1.xsd"
version="3.1">
<display-name>Webapps3</display-name>
<welcome-file-list>
<welcome-file>home.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>form</servlet-name>
<servlet-class>com.technical.ShowForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>form</servlet-name>
<url-pattern>/showform</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>process</servlet-name>
<servlet-class>com.technical.ProcessData</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>process</servlet-name>
<url-pattern>/pform</url-pattern>
</servlet-mapping>
</web-app>
Home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Welcome</title>
<style type="text/css">
img {
width: 400px;
height: 400px;
}
.side {
display: inline-block;
}
</style>
<title>Insert title here</title>
</head>
<body>
<div class="side">
<h1>Welcome to Technical Company</h1>
</div>
<div class="side"> Download the Image and copy the image
<a href="showform">Career</a> and paste on the webapp folder of the
</div> Project.
<div>
<img src="pexels-pixabay-269077.jpg">
</div>
</body>
</html>
ShowForm.java
package com.technical;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out =arg1.getWriter();
out.println("<html>\r\n"
+ " <head>\r\n"
+ " <style>\r\n"
+ "\r\n" //do by your self
+ " </style>\r\n"
+ " </head>\r\n"
+ " <body>\r\n"
+ " <div>\r\n"
+ " <form action='pform'>\r\n"
+ " <div>\r\n"
+ " Name:<input type=\"text\" name=\"us\">\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " Email:<input type=\"text\" name=\"em\"\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " <input type=\"submit\" value=\"register\"\r\n"
+ " </div>\r\n"
+ " </form>\r\n"
+ " </div>\r\n"
+ " </body>\r\n"
+ "\r\n" This html is made in Visual Studio
+ "</html>"); app copied and pasted here
// out.println("<html>"
// + "<head>" OR
// + "<style>"
// + "" In eclipse also you can make
// + "</style>"
// + "</head>"
// + "<body>"
// + "<div>"
// + "<form>"
// + "<div>"
// + "Name:<input type='text' name='us'>"
// + "</div>"
// + "<div>"
// + "Email:<input type='text' name='em'>"
// + "</div>"
// + "<div>"
// + "<input type='submit' value='register'>"
// + "</div>"
// + "</form>"
// + "</div>"
// + "</body>"
// + "</html>");
//
}
}
ProcessData.java
package com.technical;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
String name=arg0.getParameter("us");
String email= arg0.getParameter("em");
}
Now: Run the Server
Overview of Project
Container
Client servlet
LoginValidation
User: Database
Password:
Insert two data for checking: abc , abc123 and xyz ,xyz123
Create: Dynamic Web Project Name: RequestDispatcherExample
Create: web.xml
Create: login.html
package com.rdexample;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
{
// TODO Auto-generated method stub
String user = arg0.getParameter("us");
String pass = arg0.getParameter("ps");
Connection cn = null;
PreparedStatement pst = null;
ResultSet rs = null;
PrintWriter out = arg1.getWriter();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
cn=DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "root");
pst = cn.prepareStatement("select * from xyzcompany.logininfo where username=?");
pst.setString(1, user);
rs = pst.executeQuery();
if (rs.next()) {
String dpass = rs.getString("password");
if (pass.equals(dpass)) {
out.println("<html><body><h1>Welcome.....you successfully
login</h1></body></html>");
} else {
out.println("<html><body><h1>Check your password</h1></body></html>");
}
} else {
out.println("<html><body><h1>Check your username</h1></body></html>");
}
}
web.xml
Login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<div>
<form action="log">
<div>
User Name:<input type="text" name="us">
</div>
<div>
Password:<input type="password" name="ps">
</div>
<div>
<input type="submit" value="log in">
</div>
</form>
</div>
</body>
</html>
Run the Server
RequestDispatcher:
forward():
request Container
na=
Client
First Second
Create: web.xml
Create: NewFile.html
web.xml
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="one">
Name:<input type="text" name="na"><br> <input
type="submit">
</form>
</div>
</body>
</html>
First.java
package com.forwardExample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String name=req.getParameter("na");
System.out.println("First servlet getting name="+name);
RequestDispatcher rd=req.getRequestDispatcher("two");
request and response has
rd.forward(req, resp);
been send to : class Second
PrintWriter out = resp.getWriter();
out.println("<html><body><h1>First servlet saying name="+name+"</h1></body></html>");
}
Second.java
package com.forwardExample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String name=req.getParameter("na");
PrintWriter out=resp.getWriter();
out.println("<html><body><h1> This is Second Servlet response "+name+"</h1></body></html>");
}
include():
Container
IncludeExample
Client
Create: web.xml
Create: NewFile.html
web.xml
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="oneinclude">
Name:<input type="text" name="na"><br> <input
type="submit">
</form>
</div>
</body>
</html>
First.java
package com.includeexample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException
{
// TODO Auto-generated method stub
String name=req.getParameter("na");
System.out.println("First servlet getting name="+name);
RequestDispatcher rd=req.getRequestDispatcher("twoinclude");
rd.include(req, resp);
Second.java
package com.includeexample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException
{
// TODO Auto-generated method stub
String name=req.getParameter("na");
PrintWriter out=resp.getWriter();
out.println("<html><body><h1> This is Second Servlet response "+name+"</h1></body></html>");
}
}
At time: 1:02:54
forward():
Include():
It is used to pass the request and response object to next resource, once the next resource executed it include the
response of next resource in the current servlet.
Method signature: public void include(ServletRequest agr0, ServletResponse arg1)
Another Project: RequestDispatcherExample( if this project already there then no need of Creating Database Table)
Insert two data for checking: abc , abc123 and xyz ,xyz123
Create: Dynamic Web Project Name: RequestDispatcherExample(if this project is already there then only update it)
Create: web.xml
web.xml
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<div>
<form action="log">
<div id='userError'></div>
<div>
User Name:<input type="text" name="us">
</div>
<div id='passError'></div>
<div>
Password:<input type="password" name="ps">
</div>
<div>
<input type="submit" value="log in">
</div>
</form>
</div>
</body>
</html>
LoginValidation.java
package com.rdexample;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
String user = arg0.getParameter("us");
String pass = arg0.getParameter("ps");
Connection cn = null;
PreparedStatement pst = null;
ResultSet rs = null;
PrintWriter out = arg1.getWriter();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "root");
pst = cn.prepareStatement("select * from xyzcompany.logininfo where username=?");
pst.setString(1, user);
rs = pst.executeQuery();
if (rs.next()) {
String dpass = rs.getString("password");
if (pass.equals(dpass)) {
RequestDispatcher rd = arg0.getRequestDispatcher("profile.html");
rd.forward(arg0, arg1);
} else {
RequestDispatcher rd = arg0.getRequestDispatcher("login.html");
rd.include(arg0, arg1);
out.println("<body><script> document.getElementById('passError').innerHTML='Check Password';"
+ "document.getElementById('passError').style.color='red'</script></body>;");
}
} else {
RequestDispatcher rd = arg0.getRequestDispatcher("login.html");
rd.include(arg0, arg1);
out.println("<body><script> document.getElementById('userError').innerHTML='Check UserId';"
+ "document.getElementById('userError').style.color='red'</script></body>;");
}
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Welcome to Profile page</h1>
<h2>you successfully logged in</h2>
<p>This is a html page</p>
</body>
</html>
Video: 29
ServletContext:
getServletContext ():
it is a method of GenericServlet
method Signature: public ServletContext getServletContext(){}
web.xml
Create data
Context Object
App1 App2
driver=com.mysql
.cj.jdbc.Driver
Servlet1 Servlet2 Context Object
App3
Context Object
Another Project:
Or
Create: web.xml
Create database in HeidiSQL ie: xyzcompany then create two Tables: 1. information:(column name : name, mobile, email, username )
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.rdexample.LoginValidation</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/log</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sign</servlet-name>
<servlet-class>com.rdexample.SignUpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sign</servlet-name>
<url-pattern>/signup</url-pattern>
</servlet-mapping>
</web-app>
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<div>
<form action="log">
<div id='userError'></div>
<div>
User Name:<input type="text" name="us">
</div>
<div id='passError'></div>
<div>
Password:<input type="password" name="ps">
</div>
<div>
<input type="submit" value="log in">
</div>
<div><a href="signup.html">Sign up</a></div>
</form>
</div>
</body>
</html>
package com.rdexample;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.GenericServlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
String user = arg0.getParameter("us");
String pass = arg0.getParameter("ps");
Connection cn = null;
PreparedStatement pst = null;
ResultSet rs = null;
PrintWriter out = arg1.getWriter();
try {
Class.forName(driver);
cn = DriverManager.getConnection(url, dbuser, dbpass);
pst = cn.prepareStatement("select * from xyzcompany.logininfo where username=?");
pst.setString(1, user);
rs = pst.executeQuery();
if (rs.next()) {
String dpass = rs.getString("password");
if (pass.equals(dpass)) {
RequestDispatcher rd = arg0.getRequestDispatcher("profile.html");
rd.forward(arg0, arg1);
} else {
RequestDispatcher rd = arg0.getRequestDispatcher("login.html");
rd.include(arg0, arg1);
out.println("<body><script> document.getElementById('passError').innerHTML='Check
Password';"
+
"document.getElementById('passError').style.color='red'</script></body>;");
}
} else {
RequestDispatcher rd = arg0.getRequestDispatcher("login.html");
rd.include(arg0, arg1);
out.println("<body><script> document.getElementById('userError').innerHTML='Username not
present..Signup first to do login';"
+
"document.getElementById('userError').style.color='red'</script></body>;");
}
}
}
profile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Welcome to Profile page</h1>
<h2>you successfully logged in</h2>
<p>This is a html page</p>
</body>
</html>
signup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="signup">
<div>
Name:<input type="text" name="na">
</div>
<div>
Mobile:<input type="text" name="mob">
</div>
<div>
Age:<input type="number" name="age">
</div>
<div>
Email:<input type="text" name="em">
</div>
<div>
UserName:<input type="text" name="us">
</div>
<div>
Password:<input type="text" name="ps">
</div>
<div>
<input type="submit" value="Sign Up">
</div>
<div>
<input type="reset" value="Reset">
</div>
</form>
</div>
</body>
</html>
package com.rdexample;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String name=req.getParameter("na");
String mobile=req.getParameter("mob");
//int age=Integer.parseInt(req.getParameter("age"));
String pass = req.getParameter("ps");
String user=req.getParameter("us");
String email=req.getParameter("em");
Connection cn = null;
PreparedStatement pst = null;
try {
Class.forName(driver);
cn=DriverManager.getConnection(url,dbuser,dbpass);
pst=cn.prepareStatement("insert into xyzcompany.information values(?,?,?,?)");
pst.setString(1, name);
pst.setString(2, mobile);
pst.setString(3, email);
pst.setString(4, user);
pst.executeUpdate();
pst=cn.prepareStatement("insert into xyzcompany.logininfo values(?,?)");
pst.setString(1, user);
pst.setString(2,pass);
pst.executeUpdate();
// RequestDispatcher rd=req.getRequestDispatcher("login.html");
// rd.include(req, resp);
// Or
req.getRequestDispatcher("login.html").include(req, resp);
}
Run the server:
Video: 30
Client
Form + Name
Two
lname
Name+lname
web.xml
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="fir">
</form>
</body>
</html>
One.java
package com.intercommunication;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String name=req.getParameter("na");
name=name.toUpperCase();
ServletContext con=getServletContext();
con.setAttribute("info",name );
PrintWriter out=resp.getWriter();
out.println("<html><body>your First name is "+name+""
+ "<form action='sec'>"
+ "Last Name:<input type='text' name='lname'><br><br>"
+ "<input type='submit'>"
+ "</form>"
+ "</body></html>");
}
}
Two.java
package com.intercommunication;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
String lname = req.getParameter("lname");
lname = lname.toUpperCase();
ServletContext con=getServletContext();
String fname=(String) con.getAttribute("info");
}
ServletConfig:
It is interface present in javax.servlet package
SevletConfig object simply known as config object
For every servlet in the application a config Object is created by Container, Container create config object when the
Servlet receive first request.
We can get the object of config object by getServletConfig() present in the Servlet interface
Method Signature: public ServletConfig getServletConfig(){}
This method is used to configuring the Servlet
Context
Object
Servlet
Servlet
Config Config
Object Object
web.xml
Servlet
Config
Object
New Project:
Create web.html
Create home.html
Download 3 laptop images in jpg format and copy those 3 images and paste it in webapp folder of the project
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_3_1.xsd"
version="3.1">
<display-name>ServletConfigExample</display-name>
<welcome-file-list>
<welcome-file>home.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>laptop</servlet-name>
<servlet-class>com.ServletConfigExample.ShowLaptop</servlet-class>
<init-param>
<param-name>lap1img</param-name>
<param-value>laptop.jpg</param-value>
</init-param>
<init-param>
<param-name>lap1text</param-name>
<param-value>mi</param-value>
</init-param>
<init-param>
<param-name>lap2img</param-name>
<param-value>laptop02.jpg</param-value> Here we do changes of the images
</init-param> and value of the image if we want
<init-param>
<param-name>lap2text</param-name> to so it won’t require accessing
<param-value>dell</param-value> Servlet class
</init-param>
<init-param>
<param-name>lap3img</param-name>
<param-value>laptop03.jpg</param-value>
</init-param>
<init-param>
<param-name>lap3text</param-name>
<param-value>sony</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>laptop</servlet-name>
<url-pattern>/showlaptop</url-pattern>
</servlet-mapping>
</web-app>
home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a>Mobile</a>
<a href="showlaptop">Laptop</a>
<a>Clothes</a>
</body>
</html>
package com.ServletConfigExample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletConfig config=getServletConfig();
String lap1img=config.getInitParameter("lap1img");
String lap1text=config.getInitParameter("lap1text");
String lap2img=config.getInitParameter("lap2img");
String lap2text=config.getInitParameter("lap2text");
String lap3img=config.getInitParameter("lap3img");
String lap3text=config.getInitParameter("lap3text");
}
Run the server:
Overview of the Project Video: 31
Javax.servlet.http package:
interfaces:
1. HttpServletRequest
2. HttpServletResponse implements
3. HttpSession
4. HttpServletContext GenericServlet (abstract class)
5.etc
service(): one Overridden
method of Servlet interface
Classes:
HttpServlet
Cookie
HttpServlet:
extends
It is an abstract class present in javax.servlet.http
It extends GenericServlet
HttpServlet (abstract class)
It is the bound with the HTTP protocol and provide many feature like cookies,
session There is no abstract method
Types of Http request:
Server
1. GET --> This request is made when we need some information like
Form/info view etc. To process GET type of request we use doGet()
GET type of request not suitable for large data or sensitive data
We can send small and non-sensitive data
Every anchor tag(i.e. <a></a>) create GET request
<form action=”pform”></form>: this form tag have default Default GET tag http or
https
But we can change into POST request also request
2. POST <form action=”pform” method=”post”></form>: Client
This request have POST request
This type of request is made when we are sending the
Data to server
To process POST request we use doPost()
It is used for sending the large data and sensitive data
3. HEAD It is like GET type of request , but it only used to send Header information,
HEAD request can be processed by doHead()
4. PUT It is used for uploading some updates in the resource
To process PUT type of request we use doPut()
5. DELETE we make this request when we want to delete any resource
We process this request in doDelete()
6. TRACE This request is used for testing the resource
We process this request in doTrace()
7. CONNECT
8. OPTIONS
9. PATCH
Project: Webapp3
home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Welcome</title>
<style type="text/css">
img { This tag always makes a GET request
width: 400px;
height: 400px;
}
.side {
display: inline-block;
}
</style>
<title>Insert title here</title>
</head>
<body>
<div class="side">
<h1>Welcome to Technical Company</h1>
</div>
<div class="side">
<a href="showform">Career</a>
</div>
<div>
<img src="pexels-pixabay-269077.jpg">
</div>
</body>
</html>
This is GET request
package com.technical;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException
{
// TODO Auto-generated method stub
PrintWriter out =arg1.getWriter();
out.println("<html>\r\n"
+ " <head>\r\n"
+ " <style>\r\n"
+ "\r\n" //do by your self This tag is by default GET request
+ " </style>\r\n" but you can change into POST
+ " </head>\r\n" request.
+ " <body>\r\n"
+ " <div>\r\n"
+ " <form action='pform'>\r\n"
+ " <div>\r\n"
+ " Name:<input type=\"text\" name=\"us\">\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " Email:<input type=\"text\" name=\"em\"\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " <input type=\"submit\" value=\"register\"\r\n"
+ " </div>\r\n"
+ " </form>\r\n"
+ " </div>\r\n"
+ " </body>\r\n"
+ "\r\n"
+ "</html>");
This is GET request because of all sensitive data are visible
here and this is not recommended Data leak can be chances
package com.technical;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out =arg1.getWriter();
out.println("<html>\r\n"
+ " <head>\r\n"
+ " <style>\r\n"
+ "\r\n" //do by your self This is a POST request
+ " </style>\r\n"
+ " </head>\r\n"
+ " <body>\r\n"
+ " <div>\r\n"
+ " <form action='pform' method=’post’>\r\n"
+ " <div>\r\n"
+ " Name:<input type=\"text\" name=\"us\">\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " Email:<input type=\"text\" name=\"em\"\r\n"
+ " </div>\r\n"
+ " <div>\r\n"
+ " <input type=\"submit\" value=\"register\"\r\n"
+ " </div>\r\n"
+ " </form>\r\n"
+ " </div>\r\n"
+ " </body>\r\n"
+ "\r\n"
+ "</html>");
}
This is a POST request because Data is not
visible in request
New Project:
Create web.xml
Create index.html
web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>one</servlet-name>
<servlet-class>com.example.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>one</servlet-name>
<url-pattern>/submit</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1> Hi welcome Sir </h1>
<a href="submit"> Show Register form</a> This will execute doGet method
</body>
</html>
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
out = resp.getWriter();
out.println("<html><body><h1>This will show a form this is in doGet<h1></body></html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
String name=req.getParameter("na");
out=resp.getWriter();
out.println("<html><body><h1>"+name+" is executed in doPost<h1></body></html>");
}
}
Run the Server:
Video: 32
This type of request made when we need resource This type of request is made when we are sending
(data/information/form/file) from the server resource to server
This is not suitable for sending Large data It take large amount of data
This type of request not suitable for sending sensitive Data will not be visible in URL section, so we can send
information as data is visible in URL section sensitive information
Http request:
Http request:
head: url
head: url+data
ip etc ip etc
Body: data
Body:
Create web.xml
Create index.xml
web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>one</servlet-name>
<servlet-class>com.example.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>one</servlet-name>
<url-pattern>/submit</url-pattern>
</servlet-mapping>
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Hi welcome Sir</h1>
</body>
</html>
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
out = resp.getWriter();
out.println("<html><body>This will show a form:<br><br>"
+ "<form>"
+ "Name:<input type ='text' name='na'> <br><br>"
+ "Mobile:<input type ='text' name='mob'><br><br>"
+ "<input type='submit'>"
+ "</form>"
+ "</body></html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
String name=req.getParameter("na");
out=resp.getWriter();
out.println("<html><body><h1>"+name+"<h1></body></html>");
}
}
Run the Server:
This output will come by clicking “submit”
SecondServlet FirstServlet
Client
Client
Context Object
OTP: 2567
Change OTP: 5784
Why context Object is not preferable for above situation because 1 st Client will make a request and it will give the otp number and at
same time 2nd Client will also make request and it will get the OTP number but for 1 st Client that OTP number will change because of
only one Context Object present for both client for that reson we should use Session Object for the above situation.
Session: It is the time between client accessing the Webpage (web application) to the browser closing.
Session is an object created for every user when they access the webapplication and session will deleted when browser will
close
Client
Client
Session
Object
Create New Dynamic Web Project: sessionExample
Create: web.xml
Create: NewFile.html
NewFile.htm
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="data" method="post">
Name:<input type="text" name="na"><br>
<br> Mobile:<input type="text" name="mob"><br>
<br> <input type="submit">
</form>
</body>
</html>
FirstServlet.java
package com.sessionExample;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
//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;
import javax.servlet.http.HttpSession;
@WebServlet(value="/data")
public class FirstServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
String name=req.getParameter("na");
String mobile = req.getParameter("mob");
PrintWriter out=resp.getWriter();
out.println("<html><body>"
+ "Please Enter following captcha: "+cap
+"<form action='captcha' method='post'>"
+"<input type='text' name='cap'>"
+ "<input type='submit'>"
+ "</form>"
+ "</body></html>");
}
}
SecondFirst.java
package com.sessionExample;
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;
This annotation will reduce line of
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; code in web.xml
@WebServlet(value="/captcha")
public class SecondServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
//String originalCap=(String)context.getAttribute("originalCap");
String originalCap = (String) session.getAttribute("originalCap");
String userCap =req.getParameter("cap");
if(userCap.equals(originalCap)) {
out.println("<html><body><h1> Captcha Correct</h1></body></html>");
}
else {
req.getRequestDispatcher("data").include(req,resp);
out.println("<html><body><h3> Captcha Wrong re-enter</h3></body></html>");
}
This means that two session object is created for 1st Client and 2nd
Client
This page will be seen for both Clients: if you enter Wrong
Captcha
Video: 32-2nd
setAttribute():
It is a method of HttpSession, ServletContext and ServletRequest
It is used to push a key and value pair to session Object
Key is of String type and value is of Object type
Method Signature: public void setAttribute(String key, Object value)
getAttribute():
It is a method of HttpSession, ServletContext and ServletRequest
It is used to read the value from key
Method Signature: public Object getAttribute(String key)
What is a drawback of session object?
Ans. If there is lot of client is there then for every client having one session object. That session Object contains data for particular
Client and some data will be pushed to that session object that will create load to the server because of each client have each
session object so it will load the server
Or
For every client there is a session object created and it contains session scope data. Session object is stored in the server which may
Load the server so usally goes for Cookies.
Cookies:
Web server
Application1 Application2
Client
Request
Response
Attach
Pushing data
Cookie
Cookies:
It is used to store the information at client side
It is a class present in javax.servlet.http package
We can create a cookie by creating object of Cookie class: Cookie c1 = new Cookie (key, value);
We can add the Cookie to response by: resp.addCookie (CookieObject);
FirstServletCookies SecondServletCookies
Captcha+Cookie
Client
Cookie:
Attached Captcha Verfication:
Please enter the following
Yes
captcha:
NO
Name:
Mobile:
NewFile.html
web.xml
Create: Dynamic Web Project-- CookiesExamples
Create: web.xml
Create: NewFile.html
web.xml
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="formdata" method="post">
Name:<input type="text" name="na"><br> <br>
Mobile:<input type="text" name="mob"><br> <br>
<input type="submit">
</form>
</body>
</html>
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
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(value = "/formdata")
public class FirstServletCookies extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(req, resp);
String name = req.getParameter("na");
String mobile = req.getParameter("mob");
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(value = "/captchaverfiy")
public class SecondServletCookies extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(req, resp);
if (userCap.equals(originalCap)) {
out.println("<html><body><h1> Captcha Correct</h1></body></html>");
} else {
req.setAttribute("result","failed");
req.getRequestDispatcher("formdata").forward(req, resp);
/* include(req, resp) method is not working properly (in video:33_A.java_04.08.21_REC)*/
}
}
}
What is Session Management? Ans. It is combination of HttpSession and Cookies
HttpSession: session object stores in server if lot of client using then it will load the Server
Cookies: Cookies Object stores in client browser so if client disable the Cookies in his Browser then web page will not work properly
previous Project (CookiesExample) you can do that.
translation
compilation
Instantiation Java Separate .class
Initialization
Service
Destroy html separate html
There are 9 implicit(predefined) objects are there How to create .jsp file in Dynamic Web Project?
in .jsp file:
Ans. Select webapp------right click-----New------select------JSP File----
Object Types FileName: FirstJsp.jsp--------Finish
1. request---------------HttpServletRequest
2. response-------------HttpServletResponse
3. out-------------------JspWriter
4. config----------------ServletConfig
5. application----------ServletContext
6. session--------------HttpSession
7. pageContext-------PageContext
8. page-----------------Object
9. exception-----------Throwable
Create: Dynamic Web Project---FirstJsp
Create: web.xml
Create: NewFile.html
Create: FirstJsp.jsp (How to create:--select-------webapp----New----select: JSP File----FileName: FirstJsp.jsp-----Finish)
web.xml
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="FirstJsp.jsp">
Name:<input type="text" name="na"><br>
<br> <input type="submit">
</form>
</body>
</html>
FirstJsp.jsp
1. Scriptlet tag
2. Expression tag
3. Decleration tag
It is used for declaring any methods and static and non-static variable
Content of Declaration tag are written outside of every method.
FirstJsp.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String name = request.getParameter("na"); Scriptlet Tag
out.println(name);
%>
<% for(int i=1;i<=5;i++) {%> Expression Tag
<h1>hi from jsp page <%=name %></h1>
<p> This is repeated---</p>
<%} %>
<%!
Jspservice method
%>
</body> Jspservice () {
</html>
<% java code %>
}
FirstJsp.jsp
Jsp init method
Java code
Jsp destroy ()
Html Outside method inside the virtual class:
<%! Java code %>
Directives:
Directives are written as: <%@ %>
It is used for giving or adding more information to JSP
There are 3 directives:
1. page directive
2. include directive
3. taglib directive
pageEncoding: this says about the character set include in current page
errorPage: this defines the destination page to which we need to redirect if any error occurs in the current page
isErrorPage: this is used to indicate the current page is handling the error
isErrorPage=”true”
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="writing.jsp">
Name:<input type="text" name="na"><br>
<br> <input type="submit">
</form>
</body>
</html>
writing.jsp
Class.forName("com.mysql.cj.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "root");
pst = cn.prepareStatement("insert into oejm2.hello values(?)");
pst.setString(1, name);
pst.executeUpdate();
%>
<h3>Data Written into database</h3>
</body>
</html>
handlingpage.jsp
Class.forName("com.mysql.cj.jdbc.Driver");
cn = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "root");
pst = cn.prepareStatement("insert into oejm2.hello values(?)");
pst.setString(1, name);
pst.executeUpdate();
%>
<h3>Data Written into database</h3>
<%@ include file="NewFile.html" %> Include directive
</body>
</html>
Implicit Objects:
Video: 35
In jsp there are predefined words which represent the objects
1. request----------------------- HttpServletRequest
2. response----------------------HttpServletResponse
3. session------------------------HttpSession
4. exception --------------------Throwable
5. out-----------------------------PrintWriter(JspWriter)
6. config--------------------------ServletConfig
7. application--------------------ServletContext
8. page---------------------------Object
9. pageContext-----------------PageContext
Filter
Client Servlet
Filter: These are executed before the servlet and after the servlet
By filter we can do validation, encoding, decoding etc
Filter is an interface present in javax.servlet
They are Plugable so we can add filter any time or remove then any time without affect the Servlet
We can put n number of Filter
FilterOne FilterSecond
Servlet
Client
Create: NewFile.html
web.xml
<filter>
<filter-name>validation</filter-name>
<filter-class>com.filter.FilterOne</filter-class>
</filter> This order only Filter will executs i.e
<filter-mapping>
<filter-name>validation</filter-name> Filterone then it goes FilterSecond
<url-pattern>/abc</url-pattern>
</filter-mapping>
<filter>
<filter-name>secvalidation</filter-name>
<filter-class>com.filter.FilterSecond</filter-class>
</filter>
<filter-mapping>
<filter-name>secvalidation</filter-name>
<url-pattern>/abc</url-pattern>
</filter-mapping>
</web-app>
NewFile.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="abc" method="post">
Enter Name(5-10 character):<input type="text" name="na"><br>
<br> Enter Mobile Number:<input type="text" name="mobile"><br>
<br>
<input type="submit">
</form>
</body>
</html>
FilterOne.java
package com.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain ch)
throws IOException, ServletException {
// TODO Auto-generated method stub
String mobile=req.getParameter("mobile");
PrintWriter out = resp.getWriter();
if(mobile.length()==10) {
ch.doFilter(req, resp);
}
else {
out.println("<html><body> This is Filterone response"
+ " Mobile number is not valid"
+ "<a href='NewFile.html'> Home</a>"
+ "</body></html>");
}
FilterSecond.java
package com.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain ch)
throws IOException, ServletException {
// TODO Auto-generated method stub
String na = req.getParameter("na");
PrintWriter out = resp.getWriter();
if (na.length() <= 10 && na.length() >= 5) {
ch.doFilter(req, resp);
} else {
out.println("<html><body> This is FilterSecond response......"
+ " name is not valid"
+ "<a href='NewFile.html'> Home</a>"
+ "</body></html>");
}
}
}
ExampleServlet.java
package com.filter;
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;
@WebServlet( value="/abc")
public class ExampleServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
String mobile = req.getParameter("mobile");
PrintWriter out = resp.getWriter();
out.println("<html><body><h3>"+mobile+"</h3></body></html>");
}
}
Run the Server:
Or