0% found this document useful (0 votes)
29 views28 pages

AJ 2023 Practical

Uploaded by

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

AJ 2023 Practical

Uploaded by

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

1. Write a servlet application that manages marks updation of End Semester.

Supplementary examination and thus


allows to update marks of a student in database if the course grade is found F else it does not allow to update the
marks and also shows invalid task message to user. Here, write an HTML form that inputs following fields univ-roll-no.,
session, semester, course and marks. It updates grade information in database according to the input marks. The
marks range are following:
MARKS GRADE
70-100 A
40-70 B
Below 40 F

1. HTML Form
<!DOCTYPE html>
<html>
<head>
<title>Update Marks</title>
</head>
<body>
<h1>Update Marks</h1>
<form action="UpdateMarksServlet" method="post">
<label for="univRollNo">University Roll No:</label>
<input type="text" id="univRollNo" name="univRollNo" required><br><br>
<label for="session">Session:</label>
<input type="text" id="session" name="session" required><br><br>
<label for="semester">Semester:</label>
<input type="text" id="semester" name="semester" required><br><br>
<label for="course">Course:</label>
<input type="text" id="course" name="course" required><br><br>
<label for="marks">Marks:</label>
<input type="number" id="marks" name="marks" required><br><br>
<input type="submit" value="Update Marks">
</form>
</body>
</html>

2. Servlet to Process the Form Data


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.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/UpdateMarksServlet")
public class UpdateMarksServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String univRollNo = request.getParameter("univRollNo");
String session = request.getParameter("session");
String semester = request.getParameter("semester");
String course = request.getParameter("course");
int marks = Integer.parseInt(request.getParameter("marks"));
String grade = calculateGrade(marks);
PrintWriter out = response.getWriter();
response.setContentType("text/html");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdbname"
, "username", "password");
String query = "SELECT grade FROM student_grades WHERE univ_roll_no = ? AND session =
? AND semester = ? AND course = ?";
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, univRollNo);
ps.setString(2, session);
ps.setString(3, semester);
ps.setString(4, course);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
String currentGrade = rs.getString("grade");
if ("F".equals(currentGrade)) {
// Update marks and grade
query = "UPDATE student_grades SET marks = ?, grade = ? WHERE univ_roll_no = ?
AND session = ? AND semester = ? AND course = ?";
ps = con.prepareStatement(query);
ps.setInt(1, marks);
ps.setString(2, grade);
ps.setString(3, univRollNo);
ps.setString(4, session);
ps.setString(5, semester);
ps.setString(6, course);
ps.executeUpdate();
out.println("<h2>Marks and grade updated successfully.</h2>");
} else {
out.println("<h2>Invalid task: Only students with an 'F' grade can update
their marks.</h2>");
}
} else {
out.println("<h2>No records found for the given details.</h2>");
}
con.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
out.println("<h2>Error: " + e.getMessage() + "</h2>");
}
}
private String calculateGrade(int marks) {
if (marks >= 70) {
return "A";
} else if (marks >= 40) {
return "B";
} else {
return "F";
}
}
}

3. Database Setup
CREATE DATABASE yourdbname;
USE yourdbname;
CREATE TABLE student_grades (
univ_roll_no VARCHAR(20),
session VARCHAR(20),
semester VARCHAR(20),
course VARCHAR(50),
marks INT,
grade CHAR(1),
PRIMARY KEY (univ_roll_no, session, semester, course)
);
2. Write a Servlet application that enables registered user to log in to the system. On successful login, it welcomes the
user with information about how many days the user had registered in the system. There must be a list of users with
passwords and date of registration stored in database. Password should contain at least one small letter, capital letter,
digit and special character and must be of minimum length of eight. Show proper message if input login fails.

1. HTML Form

Create an HTML form for user login:

html
Copy code
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="LoginServlet" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>

2. Servlet to Handle Login Logic

Create a servlet to process the login request and validate the user:

java
Copy code
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 java.time.LocalDate;
import java.time.temporal.ChronoUnit;
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("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");

PrintWriter out = response.getWriter();


response.setContentType("text/html");

if (!isValidPassword(password)) {
out.println("<h2>Invalid password format.</h2>");
return;
}
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdbname",
"username", "password");

String query = "SELECT password, registration_date FROM users WHERE username = ?";
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();

if (rs.next()) {
String storedPassword = rs.getString("password");
LocalDate registrationDate = rs.getDate("registration_date").toLocalDate();

if (password.equals(storedPassword)) {
LocalDate currentDate = LocalDate.now();
long daysSinceRegistration = ChronoUnit.DAYS.between(registrationDate,
currentDate);
out.println("<h2>Welcome, " + username + "!</h2>");
out.println("<p>You registered " + daysSinceRegistration + " days ago.</p>");
} else {
out.println("<h2>Invalid username or password.</h2>");
}
} else {
out.println("<h2>Invalid username or password.</h2>");
}

con.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
out.println("<h2>Error: " + e.getMessage() + "</h2>");
}
}

private boolean isValidPassword(String password) {


if (password.length() < 8) return false;
boolean hasLower = false, hasUpper = false, hasDigit = false, hasSpecial = false;
for (char c : password.toCharArray()) {
if (Character.isLowerCase(c)) hasLower = true;
else if (Character.isUpperCase(c)) hasUpper = true;
else if (Character.isDigit(c)) hasDigit = true;
else if ("!@#$%^&*()_+[]{}|;':,./<>?".contains(Character.toString(c))) hasSpecial =
true;
}
return hasLower && hasUpper && hasDigit && hasSpecial;
}
}

3. Database Setup
CREATE DATABASE yourdbname;
USE yourdbname;
CREATE TABLE users (
username VARCHAR(50) PRIMARY KEY,
password VARCHAR(50) NOT NULL,
registration_date DATE NOT NULL
);
3. Write a Servlet application that gives us a Digital Temperature converter which converts Celsius to Fahrenheit and
vice versa based on user inputs. Do necessary checking if inputs are blank or invalid using javascript/jquery before
form submission.

2. Servlet Code: TemperatureConverterServlet.java


package com.example;
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;

@WebServlet("/convert")
public class TemperatureConverterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String inputTemp = request.getParameter("temperature");
String conversionType = request.getParameter("conversionType");
double temperature = 0;
boolean validInput = true;
try {
temperature = Double.parseDouble(inputTemp);
} catch (NumberFormatException e) {
validInput = false;
}
double result = 0;
if (validInput) {
if ("CtoF".equals(conversionType)) {
result = (temperature * 9 / 5) + 32;
} else if ("FtoC".equals(conversionType)) {
result = (temperature - 32) * 5 / 9;
}
}
response.setContentType("text/html");
response.getWriter().println("<html><body>");
if (validInput) {
response.getWriter().println("<h2>Converted Temperature: " + result + "</h2>");
} else {
response.getWriter().println("<h2>Invalid input. Please enter a valid number.</h2>");
}
response.getWriter().println("<a href='index.html'>Go Back</a>");
response.getWriter().println("</body></html>");
}
}

4. HTML with JavaScript Validation: index.html


<!DOCTYPE html>
<html>
<head>
<title>Temperature Converter</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$('#convertForm').submit(function(event) {
let temperature = $('#temperature').val();
let isValid = true;
if (temperature.trim() === '') {
alert('Temperature cannot be blank');
isValid = false;
} else if (isNaN(temperature)) {
alert('Please enter a valid number');
isValid = false;
}
return isValid;
});
});
</script>
</head>
<body>
<h1>Temperature Converter</h1>
<form id="convertForm" action="convert" method="post">
<label for="temperature">Temperature:</label>
<input type="text" id="temperature" name="temperature"><br><br>
<input type="radio" id="CtoF" name="conversionType" value="CtoF" checked>
<label for="CtoF">Celsius to Fahrenheit</label><br>
<input type="radio" id="FtoC" name="conversionType" value="FtoC">
<label for="FtoC">Fahrenheit to Celsius</label><br><br>
<input type="submit" value="Convert">
</form>
</body>
</html>
4. Write a Servlet application that alerts if the input product has gone below 10 by checking the database on query.
Assume there is a Product table with attributes Product id, name/details, price per piece, qty, last date of refill. Show
proper message if no such product exists in database else show product id, name, if qty gone below 10 or not.

1. Database Setup
CREATE TABLE Product (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2),
qty INT,
last_date_of_refill DATE
);

2. Servlet Code: ProductAlertServlet.java


package com.example;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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("/checkProduct")
public class ProductAlertServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String productId = request.getParameter("productId");
response.setContentType("text/html");
response.getWriter().println("<html><body>");
if (productId == null || productId.trim().isEmpty()) {
response.getWriter().println("<h2>Product ID cannot be blank.</h2>");
response.getWriter().println("<a href='index.html'>Go Back</a>");
response.getWriter().println("</body></html>");
return;
}
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String password = "your_password";
conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM Product WHERE id = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, Integer.parseInt(productId));
rs = stmt.executeQuery();
if (rs.next()) {
String name = rs.getString("name");
int qty = rs.getInt("qty");
response.getWriter().println("<h2>Product ID: " + productId + "</h2>");
response.getWriter().println("<h2>Name: " + name + "</h2>");
if (qty < 10) {
response.getWriter().println("<h2>Alert: Quantity is below 10. Current
quantity: " + qty + "</h2>");
} else {
response.getWriter().println("<h2>Quantity is sufficient. Current quantity: "
+ qty + "</h2>");
}
} else {
response.getWriter().println("<h2>No product found with ID: " + productId +
"</h2>");
}
} catch (Exception e) {
response.getWriter().println("<h2>Error occurred: " + e.getMessage() + "</h2>");
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) { /* Ignored */ }
try { if (stmt != null) stmt.close(); } catch (Exception e) { /* Ignored */ }
try { if (conn != null) conn.close(); } catch (Exception e) { /* Ignored */ }
}
response.getWriter().println("<a href='index.html'>Go Back</a>");
response.getWriter().println("</body></html>");
}
}

4. HTML Form: index.html


<!DOCTYPE html>
<html>
<head>
<title>Product Alert Checker</title>
</head>
<body>
<h1>Check Product Quantity</h1>
<form action="checkProduct" method="post">
<label for="productId">Product ID:</label>
<input type="text" id="productId" name="productId"><br><br>
<input type="submit" value="Check">
</form>
</body>
</html>
5. Write a servlet application that greets if a user has visited for the first time or displays the number of times visited. If
the user visits more than 10 times then invalidate the session for security reasons with proper message to the user.

1. Servlet Code: VisitTrackerServlet.java


package com.example;
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;

@WebServlet("/trackVisit")
public class VisitTrackerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
HttpSession session = request.getSession();
Integer visitCount = (Integer) session.getAttribute("visitCount");
if (visitCount == null) {
visitCount = 0;
}
visitCount++;
session.setAttribute("visitCount", visitCount);
response.getWriter().println("<html><body>");
if (visitCount == 1) {
response.getWriter().println("<h2>Welcome! This is your first visit.</h2>");
} else if (visitCount <= 10) {
response.getWriter().println("<h2>You have visited " + visitCount + " times.</h2>");
} else {
session.invalidate();
response.getWriter().println("<h2>You have visited more than 10 times. For security
reasons, your session has been invalidated.</h2>");
}

response.getWriter().println("<a href='index.html'>Go Back</a>");


response.getWriter().println("</body></html>");
}
}

3. HTML Page: index.html


<!DOCTYPE html>
<html>
<head>
<title>Visit Tracker</title>
</head>
<body>
<h1>Welcome to the Visit Tracker Application</h1>
<form action="trackVisit" method="get">
<input type="submit" value="Check Visit">
</form>
</body>
</html>
6. Write a Servlet application that enables registered user to login to the system. On successful login, it allows the user
to update the password. There must be a list of usernames with respective passwords and the date of last time
password updation stored in database. Any password should be of length four and must contain digits only. Show
proper message if input login fails. On successful updation of passward, store new password and also the date.

1. Database Setup
sql
Copy code
CREATE TABLE User (
username VARCHAR(50) PRIMARY KEY,
password VARCHAR(4),
last_password_update DATE
);

3. Login Servlet: LoginServlet.java


package com.example;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
response.setContentType("text/html");
response.getWriter().println("<html><body>");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String pwd = "your_password";
conn = DriverManager.getConnection(url, user, pwd);
String sql = "SELECT * FROM User WHERE username = ? AND password = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
rs = stmt.executeQuery();
if (rs.next()) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("updatePassword.html");
} else {
response.getWriter().println("<h2>Invalid username or password</h2>");
response.getWriter().println("<a href='login.html'>Try Again</a>");
}
} catch (Exception e) {
response.getWriter().println("<h2>Error occurred: " + e.getMessage() + "</h2>");
} finally {
try { if (rs != null) rs.close(); } catch (Exception e) { }
try { if (stmt != null) stmt.close(); } catch (Exception e) { }
try { if (conn != null) conn.close(); } catch (Exception e) { }
}
response.getWriter().println("</body></html>");
}
}

4. Update Password Servlet: UpdatePasswordServlet.java


package com.example;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.time.LocalDate;
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("/updatePassword")
public class UpdatePasswordServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("username") == null) {
response.sendRedirect("login.html");
return;
}
String username = (String) session.getAttribute("username");
String newPassword = request.getParameter("newPassword");
response.setContentType("text/html");
response.getWriter().println("<html><body>");
if (newPassword == null || newPassword.length() != 4 || !newPassword.matches("\\d{4}")) {
response.getWriter().println("<h2>Password must be 4 digits long</h2>");
response.getWriter().println("<a href='updatePassword.html'>Try Again</a>");
return;
}
Connection conn = null;
PreparedStatement stmt = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/your_database";
String user = "your_username";
String pwd = "your_password";
conn = DriverManager.getConnection(url, user, pwd);
String sql = "UPDATE User SET password = ?, last_password_update = ? WHERE username =
?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, newPassword);
stmt.setDate(2, java.sql.Date.valueOf(LocalDate.now()));
stmt.setString(3, username);
int rowsUpdated = stmt.executeUpdate();
if (rowsUpdated > 0) {
response.getWriter().println("<h2>Password updated successfully</h2>");
} else {
response.getWriter().println("<h2>Error updating password</h2>");
}
} catch (Exception e) {
response.getWriter().println("<h2>Error occurred: " + e.getMessage() + "</h2>");
} finally {
try { if (stmt != null) stmt.close(); } catch (Exception e) { }
try { if (conn != null) conn.close(); } catch (Exception e) { }
}
response.getWriter().println("<a href='login.html'>Logout</a>");
response.getWriter().println("</body></html>");
}
}

6. HTML Pages

login.html

html
Copy code
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="login" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br><br>
<input type="submit" value="Login">
</form>
</body>
</html>
updatePassword.html

html
Copy code
<!DOCTYPE html>
<html>
<head>
<title>Update Password</title>
</head>
<body>
<h1>Update Password</h1>
<form action="updatePassword" method="post">
<label for="newPassword">New Password (4 digits):</label>
<input type="password" id="newPassword" name="newPassword" required
pattern="\d{4}"><br><br>
<input type="submit" value="Update Password">
</form>
</body>
</html>

Explanation

1. Database:
o The User table stores usernames, passwords, and the date of the last password update.
2. Servlets:
o LoginServlet handles user login. It checks the username and password against the database and
redirects to the password update page on success or shows an error message on failure.
o UpdatePasswordServlet allows the user to update their password if they are logged in. It validates
the new password and updates it

7. Write a Servlet application that inputs, calculates and maintains record of registered user's Monthly phone bill. The
inputs are monthly call usage, sms and data usage. The respective charge details are given below:
(a) upto first 50 minutes_free, rest 1.20/- per minute
(b) upto first 50 sms_free, rest 0.80/- per sms
(c) data charges first 512 MB free, rest 1.50/- per 10MB usage
Show at least 2 different bill details of a user.

HTML Form (index.html)


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Monthly Phone Bill</title>
</head>
<body>
<h2>Enter Monthly Usage</h2>
<form action="CalculateBillServlet" method="post">
<label for="calls">Call Usage (minutes):</label>
<input type="text" id="calls" name="calls"><br><br>

<label for="sms">SMS Usage:</label>


<input type="text" id="sms" name="sms"><br><br>

<label for="data">Data Usage (MB):</label>


<input type="text" id="data" name="data"><br><br>

<input type="submit" value="Calculate Bill">


</form>
</body>
</html>
Servlet (CalculateBillServlet.java)
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("/CalculateBillServlet")
public class CalculateBillServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
int callUsage = Integer.parseInt(request.getParameter("calls"));
int smsUsage = Integer.parseInt(request.getParameter("sms"));
int dataUsage = Integer.parseInt(request.getParameter("data"));
double callCharges = 0;
if (callUsage > 50) {
callCharges = (callUsage - 50) * 1.20;
}
double smsCharges = 0;
if (smsUsage > 50) {
smsCharges = (smsUsage - 50) * 0.80;
}
double dataCharges = 0;
if (dataUsage > 512) {
dataCharges = ((dataUsage - 512) / 10.0) * 1.50;
}
double totalBill = callCharges + smsCharges + dataCharges;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h2>Monthly Phone Bill</h2>");
out.println("<p>Call Usage: " + callUsage + " minutes</p>");
out.println("<p>SMS Usage: " + smsUsage + " SMS</p>");
out.println("<p>Data Usage: " + dataUsage + " MB</p>");
out.println("<p>Call Charges: $" + callCharges + "</p>");
out.println("<p>SMS Charges: $" + smsCharges + "</p>");
out.println("<p>Data Charges: $" + dataCharges + "</p>");
out.println("<p><strong>Total Bill: $" + totalBill + "</strong></p>");
out.println("</body></html>");
}
}
8. Write a servlet program to create a student database with university_roll_no, Sem 1_marks, Sem 2_marks, Sem
3_marks, Sem 4_marks, Sem 5_marks, and Sem 6_marks. Calculate the total_marks and display the database on
decending order of total_marks.
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 java.sql.Statement;
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("/StudentServlet")
public class StudentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// Database connection parameters
String url = "jdbc:mysql://localhost:3306/student_db";
String username = "root";
String password = "your_password";
Connection conn = null;
Statement stmt = null;
try {
// Load and register the JDBC driver
Class.forName("com.mysql.cj.jdbc.Driver");
// Establish the connection
conn = DriverManager.getConnection(url, username, password);
// Calculate total marks and update the database
stmt = conn.createStatement();
String updateTotalMarks = "UPDATE students SET total_marks = (sem1_marks + sem2_marks + sem3_marks + sem4_marks +
sem5_marks + sem6_marks)";
stmt.executeUpdate(updateTotalMarks);
// Retrieve data sorted by total marks in descending order
String query = "SELECT * FROM students ORDER BY total_marks DESC";
ResultSet rs = stmt.executeQuery(query);
// Display the data
out.println("<html><body>");
out.println("<h2>Student Database</h2>");
out.println("<table border='1'><tr><th>University Roll No</th><th>Sem 1 Marks</th><th>Sem 2 Marks</th><th>Sem 3
Marks</th><th>Sem 4 Marks</th><th>Sem 5 Marks</th><th>Sem 6 Marks</th><th>Total Marks</th></tr>");
while (rs.next()) {
out.println("<tr>");
out.println("<td>" + rs.getInt("university_roll_no") + "</td>");
out.println("<td>" + rs.getInt("sem1_marks") + "</td>");
out.println("<td>" + rs.getInt("sem2_marks") + "</td>");
out.println("<td>" + rs.getInt("sem3_marks") + "</td>");
out.println("<td>" + rs.getInt("sem4_marks") + "</td>");
out.println("<td>" + rs.getInt("sem5_marks") + "</td>");
out.println("<td>" + rs.getInt("sem6_marks") + "</td>");
out.println("<td>" + rs.getInt("total_marks") + "</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("</body></html>");
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
out.println("Error: " + e.getMessage());
} finally {
try {
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

(1.) Design a Login/Registration Page using HTML/JSP. The page will consist of:
(a) Usemame (Label and Text Field)
(b) Password (Lebel and Text Field)
(c) New User (Checkbox)
(d) Submit Button.
If the New user Checkbox isn't ticked, on clicking the submit button, the username and password will be checked with
some static values. If both the values are correct, a message will be displayed stating that the login is successful.
Otherwise display a suitable error message. If New user is clicked then user will choose username. If that username
exists then system will ask for other username and the password should be atleast 8 alpha-numeric value.

HTML/JSP Code
html
Copy code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login/Registration Page</title>
</head>
<body>
<h2>Login/Registration Page</h2>
<form action="login.jsp" method="post">
<div class="form-group">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<div class="form-group">
<input type="checkbox" id="newUser" name="newUser">
<label for="newUser">New User</label>
</div>
<div class="form-group">
<input type="submit" value="Submit">
</div>
</form>
</body>
</html>

JSP (login.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login/Registration Response</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
String newUser = request.getParameter("newUser");
// Static values for existing user
String existingUsername = "user123";
String existingPassword = "password123";
// Assuming a simple registration logic with static check for an existing user
if (newUser == null) {
// Login logic
if (username.equals(existingUsername) && password.equals(existingPassword)) {
out.println("<h3>Login successful!</h3>");
} else {
out.println("<h3>Error: Invalid username or password.</h3>");
}
} else {
// Registration logic
if (username.equals(existingUsername)) {
out.println("<h3>Error: Username already exists. Please choose another
username.</h3>");
} else if (password.length() < 8 || !password.matches(".*[a-zA-Z].*") ||
!password.matches(".*[0-9].*")) {
out.println("<h3>Error: Password must be at least 8 characters long and contain both
letters and numbers.</h3>");
} else {
out.println("<h3>Registration successful! You can now log in.</h3>");
}
}</body>
</html>
2. Write a Servlet that will ask for the Roll number of the student as input and retrieve marks obtained by the student
from the database and display it with a suitable message. Roll number is a & digit numeric value. If the format is
wrong an error message will be displayed.

Step 1: Create Database Table

Assume you have a database table named student_marks with the following structure:

sql
Copy code
CREATE TABLE student_marks (
roll_number INT PRIMARY KEY,
student_name VARCHAR(100),
marks_obtained INT
);
<!DOCTYPE html>
<html>
<head>
<title>Get Student Marks</title>
</head>
<body>
<h2>Enter Roll Number</h2>
<form action=" getStudentMarks " method="post">
Roll Number: <input type="text" name="rollNumber" required>
<input type="submit" value="Get Marks">
</form>
</body>
</html>

Step 2: Implement the Servlet (StudentMarksServlet.java)


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.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/getStudentMarks")
public class StudentMarksServlet extends HttpServlet {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String JDBC_USER = "your_username";
private static final String JDBC_PASSWORD = "your_password";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String rollNumberStr = request.getParameter("rollNumber");
if (rollNumberStr == null || !rollNumberStr.matches("\\d{6}")) {
showErrorPage(response, "Invalid roll number format. Please enter a 6-digit numeric
value.");
return;
}
int rollNumber = Integer.parseInt(rollNumberStr);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
String sql = "SELECT marks_obtained FROM student_marks WHERE roll_number = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, rollNumber);
rs = stmt.executeQuery();
if (rs.next()) {
int marksObtained = rs.getInt("marks_obtained");
showMarksPage(response, rollNumber, marksObtained);
} else {
showErrorPage(response, "No student found with roll number: " + rollNumber);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace(); // Handle database connection and query errors
showErrorPage(response, "Error retrieving student marks. Please try again later.");
} finally {
// Close database resources
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // Log or handle any closing errors
}
}
}
private void showErrorPage(HttpServletResponse response, String errorMessage) throws
IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Error</title></head><body>");
out.println("<h2>Error</h2>");
out.println("<p>" + errorMessage + "</p>");
out.println("</body></html>");
}
private void showMarksPage(HttpServletResponse response, int rollNumber, int marksObtained)
throws IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Student Marks</title></head><body>");
out.println("<h2>Student Marks</h2>");
out.println("<p>Roll Number: " + rollNumber + "</p>");
out.println("<p>Marks Obtained: " + marksObtained + "</p>");
out.println("</body></html>");
}
}
3. Write a Program in Java to display the last visit data and time of a client. Use sessions/cookies to accomplish this
task.

Step 1: Create Servlet (LastVisitServlet.java)


java
Copy code
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
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;
import javax.servlet.http.HttpSession;

@WebServlet("/lastVisit")
public class LastVisitServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Date currentDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentDateTime = dateFormat.format(currentDate);
HttpSession session = request.getSession();
String lastVisitTime = (String) session.getAttribute("lastVisitTime");

// Update session with current visit time


session.setAttribute("lastVisitTime", currentDateTime);

// Prepare and send response


out.println("<html><head><title>Last Visit Time</title></head><body>");
out.println("<h2>Last Visit Time:</h2>");

if (lastVisitTime != null) {
out.println("<p>Your last visit was on: " + lastVisitTime + "</p>");
} else {
out.println("<p>Welcome! This is your first visit.</p>");
}

out.println("</body></html>");
}
}
4. Design a Login Page using HTML/JSP. The Login Page will comist of
(a) Username (Label and Text Field)
(b) Password (Label and Text Field)
(c) Submit Button
On clicking the submit button, the uversame and password will be checked with values already present inside a
database table. If both the values tre correct, a message will be displayed stating than the login Is successful.
Otherwise display appropriate error message. Password should be a combination of uppercase, lowercase character,
numeric value and special characters.

Step 1: Database Setup


CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(100) NOT NULL
);

Step 2: HTML/JSP Login Page (login.jsp)


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<h2>Login Page</h2>
<form action="loginCheck.jsp" method="post">
<div class="form-group">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<div class="form-group">
<input type="submit" value="Login">
</div>
</form>
</body>
</html>

Step 3: JSP to Validate Login (loginCheck.jsp)


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Status</title>
</head>
<body>
<%
String jdbcUrl = "jdbc:mysql://localhost:3306/your_database";
String jdbcUser = "your_username";
String jdbcPassword = "your_password";
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
rs = stmt.executeQuery();
if (rs.next()) {
String fullName = rs.getString("username");
out.println("<div class='message success-message'>Login successful! Welcome, " +
fullName + ".</div>");
} else {
out.println("<div class='message error-message'>Invalid username or password.
Please try again.</div>");
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
out.println("<div class='message error-message'>Error connecting to database. Please
try again later.</div>");
} finally {
// Close database resources
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // Log or handle any closing errors
}
}
%>
</body>
</html>
5. Write a Java Servlet that will ask for Employee ID of an employee as input and then retrieve the basic salary of the
employee from the database. Now calculate and display the net salary of the employee as per following rules
DA=30% of Basic
HRA =15% of Basic
PF=6% of Basic (To be deducted)
Net salary= BASIC +DA+ HRA+PF

Step 1: Database Setup


CREATE TABLE employees (
emp_id INT AUTO_INCREMENT PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
basic_salary DECIMAL(10, 2) NOT NULL
);

Step 2: Servlet Implementation (EmployeeSalaryServlet.java)


import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
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("/calculateSalary")
public class EmployeeSalaryServlet extends HttpServlet {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String JDBC_USER = "your_username";
private static final String JDBC_PASSWORD = "your_password";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String empIdStr = request.getParameter("empId");
if (empIdStr == null || !empIdStr.matches("\\d+")) {
showErrorPage(response, "Invalid employee ID format. Please enter a numeric value.");
return;
}
int empId = Integer.parseInt(empIdStr);
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
String sql = "SELECT emp_name, basic_salary FROM employees WHERE emp_id = ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, empId);
rs = stmt.executeQuery();
if (rs.next()) {
String empName = rs.getString("emp_name");
BigDecimal basicSalary = rs.getBigDecimal("basic_salary");
BigDecimal da = basicSalary.multiply(new BigDecimal("0.30"));
BigDecimal hra = basicSalary.multiply(new BigDecimal("0.15"));
BigDecimal pf = basicSalary.multiply(new BigDecimal("0.06"));
BigDecimal netSalary = basicSalary.add(da).add(hra).subtract(pf);
showSalaryDetails(out, empName, basicSalary, da, hra, pf, netSalary);
} else {
showErrorPage(response, "No employee found with ID: " + empId);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace(); // Handle database connection and query errors
showErrorPage(response, "Error retrieving employee salary. Please try again later.");
} finally {
// Close database resources
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // Log or handle any closing errors
}
}
}
private void showSalaryDetails(PrintWriter out, String empName, BigDecimal basicSalary,
BigDecimal da, BigDecimal hra, BigDecimal pf, BigDecimal
netSalary) {
out.println("<html><head><title>Employee Salary Details</title></head><body>");
out.println("<h2>Employee Salary Details</h2>");
out.println("<p>Employee Name: " + empName + "</p>");
out.println("<p>Basic Salary: $" + basicSalary.setScale(2, RoundingMode.HALF_UP) +
"</p>");
out.println("<p>DA (30% of Basic): $" + da.setScale(2, RoundingMode.HALF_UP) + "</p>");
out.println("<p>HRA (15% of Basic): $" + hra.setScale(2, RoundingMode.HALF_UP) + "</p>");
out.println("<p>PF (6% of Basic): $" + pf.setScale(2, RoundingMode.HALF_UP) + "</p>");
out.println("<p>Net Salary: $" + netSalary.setScale(2, RoundingMode.HALF_UP) + "</p>");
out.println("</body></html>");
}
private void showErrorPage(HttpServletResponse response, String errorMessage) throws
IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Error</title></head><body>");
out.println("<h2>Error</h2>");
out.println("<p>" + errorMessage + "</p>");
out.println("</body></html>");
}
}
6. Create an HTML. form that has the following text boxes username, password, email address, date of birth. The user
fills the textboxes with data. Write a JavaScript that verifies that all text boxes have been filled. If a text box has been
left empty pop up an alert message indicating the hox that has been left empty. The script also verifies whether the
email address provided by the user is valid or invalid When the OK button is clicked, if all the details are filled correctly,
then display "thank you" elas pop up an error message "Please provide correct information".

Step 1: Create HTML Form (index.html)


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Form Validation</title>
<script>
function validateForm() {
var username = document.forms["myForm"]["username"].value;
var password = document.forms["myForm"]["password"].value;
var email = document.forms["myForm"]["email"].value;
var dob = document.forms["myForm"]["dob"].value;
if (username === "" || password === "" || email === "" || dob === "") {
alert("Please fill out all fields");
return false;
}
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
alert("Please enter a valid email address");
return false;
}
alert("Thank you!");
return true;
}
</script>
</head>
<body>
<h2>Form Validation</h2>
<form name="myForm" onsubmit="return validateForm()">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username">
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password">
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email">
</div>
<div>
<label for="dob">Date of Birth:</label>
<input type="date" id="dob" name="dob">
</div>
<div>
<input type="submit" value="Submit">
</div>
</form>
</body>
</html>
7. Write a servlet application to create a database for students having information as follows: Student name, gender,
category, family income. Display the name of female students who are of category SC or ST and family income is less
than 1,00,000.

Step 1: Database Setup


CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(100) NOT NULL,
gender VARCHAR(10) NOT NULL,
category VARCHAR(10) NOT NULL,
family_income DECIMAL(10, 2) NOT NULL
);

Step 2: Servlet Implementation (StudentDatabaseServlet.java)

Create a servlet (StudentDatabaseServlet.java) that handles the database operations and displays the required
information:

java
Copy code
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
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("/studentsInfo")
public class StudentDatabaseServlet extends HttpServlet {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String JDBC_USER = "your_username";
private static final String JDBC_PASSWORD = "your_password";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
String sql = "SELECT student_name FROM students WHERE gender = 'Female' AND (category
= 'SC' OR category = 'ST') AND family_income < 100000";
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
out.println("<html><head><title>Female Students Info</title></head><body>");
out.println("<h2>Female Students who are SC or ST with Family Income <
1,00,000</h2>");
out.println("<ul>");
while (rs.next()) {
String studentName = rs.getString("student_name");
out.println("<li>" + studentName + "</li>");
}
out.println("</ul>");
out.println("</body></html>");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace(); // Handle database connection and query errors
out.println("<html><head><title>Error</title></head><body>");
out.println("<h2>Error retrieving student information. Please try again later.</h2>");
out.println("</body></html>");
} finally {
// Close database resources
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // Log or handle any closing errors
}
}
}
}
8. Write a servlat application to create a database of employees having information: emp_id, emp_name, salary.
Calculate Income_Tax (IT) as given below:
If Salary 5,00,000 It = 0
If Salary ≥ 5,00,000 and Salary ≤ 10,00,000 IT = Else
Salary Salary* 0.20 Salary *0.10

Step 1: Database Setup


CREATE TABLE employees (
emp_id INT AUTO_INCREMENT PRIMARY KEY,
emp_name VARCHAR(100) NOT NULL,
salary DECIMAL(10, 2) NOT NULL
);

Step 2: Servlet Implementation (EmployeeDatabaseServlet.java)

Create a servlet (EmployeeDatabaseServlet.java) that handles the database operations and calculates income tax based
on salary:

java
Copy code
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
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("/employeesInfo")
public class EmployeeDatabaseServlet extends HttpServlet {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/your_database";
private static final String JDBC_USER = "your_username";
private static final String JDBC_PASSWORD = "your_password";
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
String sql = "SELECT emp_id, emp_name, salary FROM employees";
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
out.println("<html><head><title>Employee Information</title></head><body>");
out.println("<h2>Employee Information with Income Tax Calculation</h2>");
out.println("<table border='1'><tr><th>Employee ID</th><th>Employee
Name</th><th>Salary</th><th>Income Tax</th></tr>");
while (rs.next()) {
int empId = rs.getInt("emp_id");
String empName = rs.getString("emp_name");
BigDecimal salary = rs.getBigDecimal("salary");
BigDecimal incomeTax;
if (salary.compareTo(new BigDecimal("500000")) <= 0) {
incomeTax = BigDecimal.ZERO;
} else if (salary.compareTo(new BigDecimal("1000000")) <= 0) {
incomeTax = salary.multiply(new BigDecimal("0.20"));
} else {
incomeTax = salary.multiply(new BigDecimal("0.10"));
}
out.println("<tr><td>" + empId + "</td><td>" + empName + "</td><td>" + salary +
"</td><td>" + incomeTax + "</td></tr>");
}
out.println("</table>");
out.println("</body></html>");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace(); // Handle database connection and query errors
out.println("<html><head><title>Error</title></head><body>");
out.println("<h2>Error retrieving employee information. Please try again
later.</h2>");
out.println("</body></html>");
} finally {
// Close database resources
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace(); // Log or handle any closing errors
}
}
}
}

1. Write a Server-side program in JSP/SERVLET for performing multiplication of two numbers accepted from client side
by using HTML form.

Step 1: Create HTML Form (index.html)


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Multiplication Form</title>
</head>
<body>
<h2>Multiplication Form</h2>
<form action="MultiplyServlet" method="post">
<label for="num1">Enter Number 1:</label>
<input type="number" id="num1" name="num1" required>
<br><br>
<label for="num2">Enter Number 2:</label>
<input type="number" id="num2" name="num2" required>
<br><br>
<input type="submit" value="Multiply">
</form>
</body>
</html>

Step 2: Create Servlet (MultiplyServlet.java)


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("/MultiplyServlet")
public class MultiplyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
int result = num1 * num2;
out.println("<html><head><title>Multiplication Result</title></head><body>");
out.println("<h2>Multiplication Result</h2>");
out.println("<p>Number 1: " + num1 + "</p>");
out.println("<p>Number 2: " + num2 + "</p>");
out.println("<p>Result: " + result + "</p>");
out.println("</body></html>");
}
}
2. Create a table named employee which should contain at least the following fields: name, designation, address,
phone number (these should hold the data from the registration form). Establish 'JDBC' connectivity. Write a java
program/servlet/JSP/SERVLET to connect to that database and extract data from the tables and display them.
Experiment with various SQL queries. Insert the details of the users who register with the website, whenever a new
user clicks the submit button in the registration page.

Step 1: Database Setup


CREATE DATABASE employee_db;
USE employee_db;
CREATE TABLE employee (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
designation VARCHAR(100) NOT NULL,
address VARCHAR(255) NOT NULL,
phone_number VARCHAR(20) NOT NULL
);

Step 2: HTML Registration Form (index.html)


<!DOCTYPE html>
<html>
<head>
<title>Employee Registration</title>
<script type="text/javascript">
function validateForm() {
var username = document.forms["userForm"]["username"].value;
var password = document.forms["userForm"]["password"].value;
var email = document.forms["userForm"]["email"].value;
var dob = document.forms["userForm"]["dob"].value;
var designation = document.forms["userForm"]["designation"].value;
var address = document.forms["userForm"]["address"].value;
var phone = document.forms["userForm"]["phone"].value;
var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (username == "" || password == "" || email == "" || dob == "" || designation == ""
|| address == "" || phone == "") {
alert("All fields must be filled out");
return false;
}
if (!emailPattern.test(email)) {
alert("Invalid email address");
return false;
}

return true;
}
</script>
</head>
<body>
<form name="userForm" action="RegisterServlet" method="post" onsubmit="return validateForm()">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br><br>
<label for="email">Email address:</label>
<input type="text" id="email" name="email"><br><br>
<label for="dob">Date of Birth:</label>
<input type="date" id="dob" name="dob"><br><br>
<label for="designation">Designation:</label>
<input type="text" id="designation" name="designation"><br><br>
<label for="address">Address:</label>
<input type="text" id="address" name="address"><br><br>
<label for="phone">Phone Number:</label>
<input type="text" id="phone" name="phone"><br><br>
<input type="submit" value="OK">
</form>
</body>
</html>

Step 3: Servlet (RegisterServlet.java)


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.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
String dob = request.getParameter("dob");
String designation = request.getParameter("designation");
String address = request.getParameter("address");
String phone = request.getParameter("phone");
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database",
"your_username", "your_password");
String checkUserQuery = "SELECT * FROM employee WHERE email = ?";
ps = conn.prepareStatement(checkUserQuery);
ps.setString(1, email);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
out.println("User already registered with this email.");
} else {
String insertQuery = "INSERT INTO employee (name, designation, address,
phone_number, email) VALUES (?, ?, ?, ?, ?)";
ps = conn.prepareStatement(insertQuery);
ps.setString(1, name);
ps.setString(2, designation);
ps.setString(3, address);
ps.setString(4, phone);
ps.setString(5, email);
ps.executeUpdate();
out.println("Thank you for registering!");
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
out.println("An error occurred. Please try again.");
} finally {
try {
if (ps != null) ps.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3. Write a server side JSP/SERVLET program for checking Armstrong number, accept number from html file, handover
the no to JSP/Servlet file, process it and return the result.

Step 1: Create HTML Form (index.html)


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Armstrong Number Checker</title>
</head>
<body>
<h2>Armstrong Number Checker</h2>
<form action="CheckArmstrongNumber" method="post">
<label for="number">Enter a Number:</label>
<input type="number" id="number" name="number" required>
<br><br>
<input type="submit" value="Check Armstrong Number">
</form>
</body>
</html>

Step 2: Create Servlet (CheckArmstrongNumber.java)


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("/CheckArmstrongNumber")
public class CheckArmstrongNumber extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
int number = Integer.parseInt(request.getParameter("number"));
int originalNumber = number;
int numberOfDigits = String.valueOf(number).length();
int sum = 0;
while (number > 0) {
int digit = number % 10;
sum += Math.pow(digit, numberOfDigits);
number /= 10;
}
if (sum == originalNumber) {
out.println("<html><head><title>Armstrong Number Result</title></head><body>");
out.println("<h2>" + originalNumber + " is an Armstrong Number!</h2>");
out.println("</body></html>");
} else {
out.println("<html><head><title>Armstrong Number Result</title></head><body>");
out.println("<h2>" + originalNumber + " is not an Armstrong Number.</h2>");
out.println("</body></html>");
}
}
}
4. Write a program in Java to create Servlet to count the number of visitors to a web page.

Step 1: Create a Servlet (VisitorCounterServlet.java)


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("/VisitorCounterServlet")
public class VisitorCounterServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
Integer count = (Integer) session.getAttribute("visitCount");
if (count == null) {
count = 1;
} else {
count++;
}
session.setAttribute("visitCount", count);
out.println("<html><head><title>Visitor Counter</title></head><body>");
out.println("<h2>Welcome to the Visitor Counter</h2>");
out.println("<p>You are visitor number: " + count + "</p>");
out.println("</body></html>");
}
}

You might also like