0% found this document useful (0 votes)
2 views

Sneh Advanced Java

The document is a laboratory manual for the Advanced Java Programming course (3160707) for B.E. Semester 6th students at Government Engineering College, Patan. It includes practical exercises such as implementing TCP/UDP servers, connecting to MySQL databases, and creating web applications using JSP and JSF. Additionally, it outlines the vision, mission, and program outcomes for the department and course, emphasizing the importance of ethical practices and continuous learning in engineering education.

Uploaded by

utsavbhavsar1005
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)
2 views

Sneh Advanced Java

The document is a laboratory manual for the Advanced Java Programming course (3160707) for B.E. Semester 6th students at Government Engineering College, Patan. It includes practical exercises such as implementing TCP/UDP servers, connecting to MySQL databases, and creating web applications using JSP and JSF. Additionally, it outlines the vision, mission, and program outcomes for the department and course, emphasizing the importance of ethical practices and continuous learning in engineering education.

Uploaded by

utsavbhavsar1005
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/ 64

Advanced Java Programming (3160707) 220220131013

A Laboratory Manual for

Advanced Java Programming


(3160707)

B.E. Semester 6th


(Computer Science and Engineering)

Directorate of Technical Education,


Gandhinagar, Gujarat
Advanced Java Programming (3160707) 220220131013

Government Engineering college, Patan

Certificate

This is to certify that Mr. Barot Sneh Sanjaykumar Enrollment No.


220220131013 Of B.E. Semester 6th from Computer Science and Engineering
of this Institute (GTU Code: 022) has satisfactorily completed the Practical
work for the subject Advanced Java Programming (3160707) for the
academic year 2024-25.

Place: __________________
Date: __________________

Name and Sign of Faculty member

Head of the Department


Advanced Java Programming (3160707) 220220131013

Index (Progressive
Assessment Sheet)

Sr. Objective(s) of Experiment Page Date of Date of Assessme Sign. of Remar


No. No. perform submiss nt Teacher ks
ance ion Marks with date
Implement TCP Server and client for
01 transferring files using Socket and 07
ServerSocket.
Implement UDP Server and client for
02 transferring files using DatagramSocket and 09
DatagramPacket.
03 Write code to Connect Java Application with
MySQL database. 11

Implement cookies to store firstname and 12


04 lastname using Java server pages.
Implement the shopping cart for users for the
05 online shooping. Apply the concept of session. 14
Implement student registration form with
06 enrolment number, firstname, lastname,
semester, contact number. Store the detail in 19
database. Also implement search,delete and
modify faculty for student records.
Design a Web project which demonstrate the
07 CRUD operations using servlet technology. 28
Design a web Page that takes the username from
08 user and if it is a valid username from user and
if it is a valid username prints “Welcome 33
Username”,Use JSF to implement.
Design a JAVA/Web application to demonstrate
09 hibernate framework. 36
Design a JAVA/Web applications to
10 demonstrate spring framework use of MVC 50
architecture is optional.
Total
Advanced Java Programming (3160707) 220220131013

Experiment No: 0

1. Vision & Mission

1.1.1 Vision of DTE

 To facilitate quality technical and professional education having relevance for


both industry and society,with moral and ethical values,giving equal
opportunity and access,aiming to prepare globally competent technocrats.

1.1.2 Mission of DTE

 Quality technical and professional education with continuous improvement of


all the resources and personnel
 To promote conducive ecosystem for Academic, Industry, Research,
Innovations and Startups
 To provide affordable quality professional education with moral values, equal
opportunities, accessibility and accountability
 To allocate competent and dedicated human resources and infrastructure to the
institutions for providing world-class professional education to become a
Global Leader (“Vishwa Guru”)

1.2.1 Vision of Government Engineering College, Patan

 To prepare Human Resource with value based competency for technical


advancements and growth of society.

1.2.2 Mission of Government Engineering College, Patan

 Deliver technical programs and services to cater the current needs of society
and industry, and to contribute in sustainable growth of society.

1.3.1 Vision of Computer science and engineering Department, Government


Engineering College, Patan

 To achieve excellence by providing value-based education in Computer


Science and Engineering through innovation, teamwork and ethical practices.

1.3.2 Mission of Computer science and engineering Department, Government


Engineering College, Patan
 To train graduates according to the needs of industry, government, society and
scientific community.
Advanced Java Programming (3160707) 220220131013

2. Program outcomes as prescribed by NBA

Engineering Graduates will be able to:

1. Engineering knowledge: Apply the knowledge of mathematics, science, engineering


fundamentals, and an engineering specialization to the solution of complex engineering
problems.

2. Problem analysis: Identify, formulate, review research literature, and analyze complex
engineering problems reaching substantiated conclusions using first principles of mathematics,
natural sciences, and engineering sciences.

3. Design/development of solutions: Design solutions for complex engineering problems


and design system components or processes that meet the specified needs with appropriate
consideration for the public health and safety, and the cultural, societal, and environmental
considerations.

4. Conduct investigations of complex problems: Use research-based knowledge and


research methods including design of experiments, analysis and interpretation of data, and
synthesis of the information to provide valid conclusions.

5. Modern tool usage: Create, select, and apply appropriate techniques, resources, and
modern engineering and IT tools including prediction and modeling to complex
engineering activities with an understanding of the limitations.

6. The engineer and society: Apply reasoning informed by the contextual knowledge to
assess societal, health, safety, legal and cultural issues and the consequent responsibilities
relevant to the professional engineering practice.

7. Environment and sustainability: Understand the impact of the professional engineering


solutions in societal and environmental contexts, and demonstrate the knowledge of, and
need for sustainable development.

8. Ethics: Apply ethical principles and commit to professional ethics and responsibilities
and norms of the engineering practice.

9. Individual and team work: Function effectively as an individual, and as a member or


leader in diverse teams, and in multidisciplinary settings.

10. Communication: Communicate effectively on complex engineering activities with the


engineering community and with society at large, such as, being able to comprehend and
write effective reports and design documentation, make effective presentations, and give
and receive clear instructions.

11. Project management and finance: Demonstrate knowledge and understanding of the
engineering and management principles and apply these to one’s own work, as a member
and leader in a team, to manage projects and in multidisciplinary environments.
Advanced Java Programming (3160707) 220220131013

12. Life-long learning: Recognize the need for, and have the preparation and ability to
engage in independent and life-long learning in the broadest context of technological
change.

3. PSOs of the Computer science and engineering Department, Government Engineering


College, Patan

1. Graduates will be able to explore and propose effective solutions to the problems in the area of
Computer Engineering as per the needs of society and industry.
2. Graduates will be able to apply standard practice and strategies to develop quality software
products using modern techniques, programming skills, tools & an open ended programming
environment and work in a team.
3. Graduates will manifest the skills of continuous learning in the fast changing field of
Computer Engineering.

4. Course outcomes of Advanced Java Programming course

CO-1: Implement Networking and Data base connectivity in Java for given application.

CO-2: Implement webpage with dynamic content and server side web application using Servlet and
JSP.

CO-3: Use web application framework JSF to build user interfaces.

CO-4: Use Object Relation Mapping using Hibernate to build database dependent applications.

CO-5: Apply Model-View-Controller architecture to build complex client-server applicatio


Advanced Java Programming (3160707) 220220131013

Practical – 1
Aim:-Implement TCP Server and client for transferring files using Socket and ServerSocket.

Code :-

TCP SERVER :-
import java.io.*;
import java.net.*;
class Pract1Server{
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(7777);
Socket s = ss.accept();
System.out.println("connected..........");
FileInputStream fin = new FileInputStream("Send.txt");
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
int r;
while ((r = fin.read()) != -1) {
dout.write(r);

}
System.out.println("\nFiletranfer Completed");
s.close();
ss.close();
}
}

TCP CLIENT :-
import java.io.*;
import java.net.*;
public class Pract1Client{
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1", 7777);
if (s.isConnected()) {
System.out.println("Connected to server");
}
FileOutputStream fout = new FileOutputStream("received.txt");
DataInputStream din = new DataInputStream(s.getInputStream());
int r;
while ((r = din.read()) != -1) {
fout.write((char) r);
}
s.close();
}
}

7
Advanced Java Programming (3160707) 220220131013

Output:-

8
Advanced Java Programming (3160707) 220220131013

Practical - 2
Aim:- Implement UDP Server and client for transferring files using DatagramSocket and DatagramPacket.

Code :-

UDP SERVER :-
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class Pract2Server{


public static void main(String[] args) {
final int PORT = 9876;
byte[] buffer = new byte[1024];

try (DatagramSocket serverSocket = new DatagramSocket(PORT)) {


DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
serverSocket.receive(receivePacket);

String fileName = new String(receivePacket.getData()).trim();


System.out.println("File name received: " + fileName);

FileOutputStream fileOutputStream = new FileOutputStream("received_" + fileName);

while (true) {
serverSocket.receive(receivePacket);
buffer = receivePacket.getData();
fileOutputStream.write(buffer, 0, receivePacket.getLength());

if (receivePacket.getLength() < buffer.length) {


break;
}
}

fileOutputStream.close();
System.out.println("File received successfully.");

} catch (IOException e) {
e.printStackTrace();
}
}
}

UDP CLIENT :-
import java.io.FileInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Pract2Client {


public static void main(String[] args) {
final String SERVER_IP = "localhost";
final int SERVER_PORT = 9876;
byte[] buffer = new byte[1024];

try (DatagramSocket clientSocket = new DatagramSocket()) {

9
Advanced Java Programming (3160707) 220220131013

InetAddress serverAddress = InetAddress.getByName(SERVER_IP);

String fileName = "Send2.txt";


DatagramPacket sendPacket = new DatagramPacket(fileName.getBytes(), fileName.length(), serverAddress, SERVER_PORT);
clientSocket.send(sendPacket);

try (FileInputStream fileInputStream = new FileInputStream(fileName)) {


int bytesRead;

while ((bytesRead = fileInputStream.read(buffer)) != -1) {


DatagramPacket packet = new DatagramPacket(buffer, bytesRead, serverAddress, SERVER_PORT);
clientSocket.send(packet);
}
}
System.out.println("File sent successfully.");

} catch (IOException e) {
e.printStackTrace();
} }}

Output:-

10
Advanced Java Programming (3160707) 220220131013

Practical - 3
Aim:- Write code to Connect Java Application with MySQL database.

Code :-

package Pract3;
import java.sql.*;
public class Pract3 {
public Connection con;

public static void main(String[] args) {


try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/getconnect","root","Alankar@@1976");
if(con!=null){
System.out.println("Successfully Connected");}
}catch(Exception e){
System.out.println("Not Connected");
}}}

Output:-

11
Advanced Java Programming (3160707) 220220131013

Practical - 4
Aim:- Implement cookies to store firstname and lastname using Java server pages.

Code :-

index.html :-
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Setting Cookies</title>
</head>
<body>
<h1>Setting Cookies</h1>
<form action="main.jsp" method="GET">
First Name: <input type="text" name="first_name"><br /><br/>
Last Name: <input type="text" name="last_name" /><br/><br/><input type="submit" value="Submit" />
</form>
</body>
</html>

main.jsp :-
<%
Cookie firstName = new Cookie("first_name", request.getParameter("first_name"));
Cookie lastName = new Cookie("last_name", request.getParameter("last_name"));
firstName.setMaxAge(60 * 60);
lastName.setMaxAge(60 * 60);
response.addCookie(firstName);
response.addCookie(lastName);
%>
<html>

<body>
<h1>Setting Cookies</h1>
<ul>
<b>First Name:</b>
<%=request.getParameter("first_name")%><br /><br/>
<b>Last Name:</b>
<%=request.getParameter("last_name")%>
</body>
</html>

12
Advanced Java Programming (3160707) 220220131013

Output:-

13
Advanced Java Programming (3160707) 220220131013

Practical-5
Aim:- Implement the shopping cart for users for the online shopping. Apply the concept of session.

Code :-

Index.html
<html>
<head>
<metacharset="ISO-8859-1">
<title>OnlineShoppingCart</title>
<linkrel="stylesheet"href="./newcss.css">
</head>
<body>
<divclass="head">
<h1>LaptopStore</h1>
<hr>
</div>
<formaction="ShoppingCartServlet"method="post">
<divclass="body">
<divclass="card">
<div
class="hd">&nbsp;&nbsp;Mac
book
</div>
<divclass="img1">
</div>
<divclass="desc">
Description:AppleMacBookPro14M1ProchipmacOSMonterey
Laptop (16GB RAM, 512GB SSD)
<br><br>
<b>price:&#8377;189900</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="Macbook"> Add to cart </span><br><br>
</div>
</div>
<divclass="card">
<div
class="hd">&nbsp;&nbsp;Len
ovo
</div>
<divclass="img2">
</div>
<divclass="desc">
Description:LenovoLegion710thGenIntelCorei715.6inchFull HD
Gaming Laptop (16GB/1TB SSD)
<br><br>
<b>price:&#8377;143999</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="Lenovo"> Add to cart </span><br><br>
</div>
</div>
<divclass="card">
<div
class="hd">&nbsp;&nbsp;AS
14
Advanced Java Programming (3160707) 220220131013

US
</div>
<divclass="img3">
</div>
<divclass="desc">
Description:ASUSTUFGamingF15,15.6-inchFHD144Hz,IntelCore i5-
10300H 10th Gen (8GB RAM/512GB SSD)
<br><br>
<b>price:&#8377;63990</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="ASUS"> Add to cart </span><br><br>
</div>
</div>
</div>
<inputtype="submit"value="ViewCart">
</form>
</body>
</html>
newcss.css
<html>
<head>
<metacharset="ISO-8859-1">
<title>OnlineShoppingCart</title>
<linkrel="stylesheet"href="./newcss.css">
</head>
<body>
<divclass="head">
<h1>LaptopStore</h1>
<hr>
</div>
<formaction="ShoppingCartServlet"method="post">
<divclass="body">
<divclass="card">
<div
class="hd">&nbsp;&nbsp;Mac
book
</div>
<divclass="img1">
</div>
<divclass="desc">
Description:AppleMacBookPro14M1ProchipmacOSMonterey
Laptop (16GB RAM, 512GB SSD)
<br><br>
<b>price:&#8377;189900</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="Macbook"> Add to cart </span><br><br>
</div>
</div>
<divclass="card">
<div class="hd">&nbsp;&nbsp;Lenovo
15
Advanced Java Programming (3160707) 220220131013

</div>
<divclass="img2">
</div>
<divclass="desc">
Description:LenovoLegion710thGenIntelCorei715.6inchFull HD
Gaming Laptop (16GB/1TB SSD)
<br><br>
<b>price:&#8377;143999</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="Lenovo"> Add to cart </span><br><br>
</div>
</div>
<divclass="card">
<div
class="hd">&nbsp;&nbsp;AS
US
</div>
<divclass="img3">
</div>
<divclass="desc">
Description:ASUSTUFGamingF15,15.6-inchFHD144Hz,IntelCore i5-
10300H 10th Gen (8GB RAM/512GB SSD)
<br><br>
<b>price:&#8377;63990</b>
<br><br>
<spanclass="crt"><inputtype="checkbox"name="laptop"
value="ASUS"> Add to cart </span><br><br>
</div>
</div>
</div>
<inputtype="submit"value="ViewCart">
</form>
</body>
</html>

ShoppingCartServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet("/Cart")
publicclassShoppingCartServletextendsHttpServlet{
private static final long serialVersionUID = 1L;
/**
*@see HttpServlet#HttpServlet()
16
Advanced Java Programming (3160707) 220220131013

publicShoppingCartServlet(){
super();
//TODOAuto-generatedconstructorstub
}
/**
* @paramrequest
* @paramresponse
* @throwsjavax.servlet.ServletException
* @throwsjava.io.IOException
* @seeHttpServlet#doGet(HttpServletRequestrequest,
HttpServletResponse response)
*/
@Override
protectedvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
response.getWriter().append("Servedat:").append(request.getContextPath());
response.setContentType("text/html");
Map<String,Integer>map=newHashMap<String,Integer>();
map.put("Macbook", 189900);
map.put("Lenovo",143999);
map.put("ASUS",63990);
Stringnames[]=request.getParameterValues("laptop");
PrintWriter out = response.getWriter();
out.println("<h1>Cart</h1>");
for(inti=0;i<names.length;i++){
int value = map.get(names[i]);
out.println(names[i]+"&emsp;"+value+"<br>");
}
intans=0;
for(inti=0;i<names.length;i++){
ans = ans + map.get(names[i]);
}
out.println(" <br>");
out.println("Total&emsp;"+ans);
}
/**
* @paramresponse
* @throwsjavax.servlet.ServletException
* @throwsjava.io.IOException
* @see
* @paramrequestHttpServlet#doPost(HttpServletRequestrequest,
HttpServletResponse response)
*/

@Override
protected void doPost(HttpServletRequest
request,HttpServletResponseresponse)throwsServletException,IOExcep
tion{
//TODOAuto-generatedmethodstub
doGet(request, response);
}
}

17
Advanced Java Programming (3160707) 220220131013

Output:-

18
Advanced Java Programming (3160707) 220220131013

Practical-6
Aim:- Implement student registration form with enrolment number, firstname, lastname, semester,
contact number. Store the details in database. Also implement search, delete and modify facility for
student records.

Code:-
NewJFrame.java
import java.sql.Connection;
importjava.sql.DriverManager;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
importjava.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
* Clicknbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txttochangethislicense
* Clicknbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.javatoeditthistemplate
*/

/**
*
* @authoradmin
*/
publicclassNewJFrameextendsjavax.swing.JFrame{
Connection con;
ResultSet rs;
PreparedStatementpst;
Stringurl="jdbc:mysql://localhost:3306/student_data";
String user="root";
Stringpass="Alankar@@1976";
public NewJFrame() {
initComponents();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con=DriverManager.getConnection(url,user,pass);
pst=con.prepareStatement("select * from data");
rs=pst.executeQuery();
if(rs.next()){
enrollment.setText(rs.getString(1));
fname.setText(rs.getString(2));
lname.setText(rs.getString(3));
semester.setText(rs.getString(4));
contact.setText(rs.getString(5));
}
}
catch (ClassNotFoundException | SQLException e) {
JOptionPane.showMessageDialog(this,"ErrorInConnectivity");
}
}

@SuppressWarnings("unchecked")
//<editor-folddefaultstate="collapsed"desc="GeneratedCode">
private void initComponents() {
19
Advanced Java Programming (3160707) 220220131013

jLabel1 = new javax.swing.JLabel();


jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
lname=newjavax.swing.JTextField();
fname=newjavax.swing.JTextField();
enrollment=newjavax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
semester = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
contact = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
setForeground(newjava.awt.Color(204,0,255));

jLabel1.setText("Enrollment Number");

jLabel2.setText("Last Name");

jLabel3.setText("First Name");

lname.addActionListener(new java.awt.event.ActionListener() {
publicvoidactionPerformed(java.awt.event.ActionEventevt){
lnameActionPerformed(evt);
}
});

enrollment.addActionListener(newjava.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
enrollmentActionPerformed(evt);
}
});

jButton1.setText("Insert");
jButton1.addActionListener(newjava.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("Search");
jButton2.addActionListener(newjava.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jButton3.setText("Update");
jButton3.addActionListener(newjava.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
20
Advanced Java Programming (3160707) 220220131013

});
jButton4.setText("Delete");
jButton4.addActionListener(newjava.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});

jLabel4.setFont(newjava.awt.Font("SegoeUI",3,24));//NOI18N
jLabel4.setForeground(new java.awt.Color(0, 102, 204));
jLabel4.setText("Student Registration Form");

jLabel5.setText("Semester");

jLabel6.setText("ContactNumber");

javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(115,115,115)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,false)
.addComponent(jLabel1,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel5,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel3,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel6,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(18,18,18)
.addComponent(jButton2)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false)
.addComponent(contact)
.addComponent(semester)
.addComponent(enrollment,javax.swing.GroupLayout.DEFAULT_SIZE,186,Short.MAX_VALUE)
.addComponent(fname)
.addComponent(lname))

.addGap(363,363,363))
.addGroup(layout.createSequentialGroup()
.addGap(18,18,18)
.addComponent(jButton3)
.addGap(18,18,18)
.addComponent(jButton4)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE))))
21
Advanced Java Programming (3160707) 220220131013

.addGroup(layout.createSequentialGroup()
.addGap(130,130,130)
.addComponent(jLabel4,javax.swing.GroupLayout.PREFERRED_SIZE,312,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0,0,Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(22,22,22)
.addComponent(jLabel4)
.addGap(18,18,18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED_SIZE,22,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(enrollment, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3,javax.swing.GroupLayout.PREFERRED_SIZE,22,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(fname, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lname, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2,javax.swing.GroupLayout.PREFERRED_SIZE,22,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(semester, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(contact, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18,18,18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton1)
.addComponent(jButton3)
.addComponent(jButton4))
.addContainerGap(123,Short.MAX_VALUE))
);

pack();
setLocationRelativeTo(null);
}//</editor-fold>

privatevoidenrollmentActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
}

privatevoidlnameActionPerformed(java.awt.event.ActionEventevt){
22
Advanced Java Programming (3160707) 220220131013

//TODOaddyourhandlingcodehere:
}
privatevoidjButton4ActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
try{
pst=con.prepareStatement("deletefromdatawhereenrollment=?");
pst.setString(1, enrollment.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(this,"Success");
} catch (SQLException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);
}
}
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
try{
pst=con.prepareStatement("insertintodata(enrollment,firstname,lastname,semester,contact)values(?,?,?,?,?)");
pst.setString(1,enrollment.getText());
pst.setString(2,fname.getText());
pst.setString(3,lname.getText());
pst.setString(4,semester.getText());
pst.setString(5,contact.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(this,"Success");
} catch (SQLException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);
}

}
privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
Strings=JOptionPane.showInputDialog(this,"EnterEnrollmentforsearch");

try{
//TODOaddyourhandlingcodehere:

pst=con.prepareStatement("select*fromdatawhereenrollment=?");
pst.setString(1, s);
rs=pst.executeQuery();
if(rs.next()){
enrollment.setText(rs.getString(1));

fname.setText(rs.getString(2));
lname.setText(rs.getString(3));
semester.setText(rs.getString(4));
contact.setText(rs.getString(5));
JOptionPane.showMessageDialog(this,"Success");
}
} catch (SQLException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);
}
}

privatevoidjButton3ActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
try{
pst=con.prepareStatement("updatedatasetfirstname=?,lastname=?,semester=?,contact=?whereenrollment=?");

23
Advanced Java Programming (3160707) 220220131013

pst.setString(1, fname.getText());
pst.setString(2, lname.getText());
pst.setString(3, semester.getText());
pst.setString(4, contact.getText());
pst.setString(5,enrollment.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(this,"Success");
} catch (SQLException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE,null,ex);
}
}

/**
*@paramargsthecommandlinearguments
*/
publicstaticvoidmain(Stringargs[]){
/*SettheNimbuslookandfeel*/
//<editor-folddefaultstate="collapsed"desc="Lookandfeelsettingcode(optional)">
/*IfNimbus(introducedinJavaSE6)isnotavailable,staywiththedefaultlookandfeel.
*Fordetailsseehttp://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try{
for(javax.swing.UIManager.LookAndFeelInfoinfo:javax.swing.UIManager.getInstalledLookAndFeels()){ if
("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newNewJFrame().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JTextField contact;
privatejavax.swing.JTextFieldenrollment;
private javax.swing.JTextField fname;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;private
javax.swing.JLabel jLabel2;private
javax.swing.JLabel jLabel3;

24
Advanced Java Programming (3160707) 220220131013

private javax.swing.JLabel jLabel4;


private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JTextField lname;
privatejavax.swing.JTextFieldsemester;
}

Output:-

25
Advanced Java Programming (3160707) 220220131013

26
Advanced Java Programming (3160707) 220220131013

27
Advanced Java Programming (3160707) 220220131013

Practical-7
Aim:- Design a web project which demonstrate the CRUD operations using servlet technology.

Code :-

Create Reservation OR Add Reservation Code:


package com.hotel.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.hotel.util.DBConnection;
import jakarta.servlet.http.HttpSession;

public class AddReservationServlet 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 userName=request.getParameter("user_name");
String guestName = request.getParameter("guest_name");
int roomNumber = Integer.parseInt(request.getParameter("room_number"));
String contactNumber = request.getParameter("contact_number");
String checkIn = request.getParameter("check_in");
String checkOut = request.getParameter("check_out");
try {
Connection conn = DBConnection.getConnection();
String sql = "INSERT INTO reservations (user_name,guest_name,room_number,contact_number,check_in, check_out)
VALUES (?, ?, ?, ? ,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, userName);
ps.setString(2, guestName);
ps.setInt(3, roomNumber);
ps.setString(4, contactNumber);
ps.setString(5, checkIn);
ps.setString(6, checkOut);

int rowsInserted = ps.executeUpdate();


out.println("<html><body>");
if (rowsInserted > 0) {
out.println("<h2>Reservation Added Successfully!</h2>");
} else {
out.println("<h2>Failed to Add Reservation.</h2>");
}
out.println("</body></html>");
} catch (Exception e) {
e.printStackTrace();
out.println("<h2>Error: " + e.getMessage() + "</h2>");
}
28
Advanced Java Programming (3160707) 220220131013

}
}

Read Reservation OR View Reservation Code:


package com.hotel.servlet;
import com.hotel.util.DBConnection;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

public class ViewReservationServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

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

HttpSession session = request.getSession(false);


if (session == null || session.getAttribute("username") == null) {
response.sendRedirect("login.html"); // Redirect if not logged in
return;
}

String username = (String) session.getAttribute("username");


String role = (String) session.getAttribute("role"); // Assuming role is stored in session as "admin" or "customer"

try (Connection con = DBConnection.getConnection()) {


String query;
PreparedStatement ps;

if ("admin".equals(role)) {
// Admin: Fetch all reservations
query = "SELECT * FROM reservations";
ps = con.prepareStatement(query);
} else {
// Customer: Fetch only their reservations
query = "SELECT * FROM reservations WHERE user_name = ?";
ps = con.prepareStatement(query);
ps.setString(1, username);
}

ResultSet rs = ps.executeQuery();

out.println("<html><head><title>View Reservations</title></head><body>");
out.println("<h2>Reservation List</h2>");
out.println("<table border='1'>");
out.println("<tr><th>ID</th><th>Username</th><th>Room Number</th><th>Check-In</th><th>Check-Out</th></tr>");

boolean hasData = false;


while (rs.next()) {
hasData = true;
out.println("<tr>");
out.println("<td>" + rs.getInt("id") + "</td>");
out.println("<td>" + rs.getString("user_name") + "</td>");
out.println("<td>" + rs.getInt("room_number") + "</td>");
29
Advanced Java Programming (3160707) 220220131013

out.println("<td>" + rs.getString("check_in") + "</td>");


out.println("<td>" + rs.getString("check_out") + "</td>");
out.println("</tr>");
}

if (!hasData) {
out.println("<tr><td colspan='5'>No reservations found.</td></tr>");
}

out.println("</table>");

if ("admin".equals(role)) {
out.println("<br><a href='adminDashboard.html'>Back to Dashboard</a>");
} else {
out.println("<br><a href='customerDashboard.html'>Back to Dashboard</a>");
}

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

} catch (Exception e) {
e.printStackTrace();
out.println("<h3>Error: " + e.getMessage() + "</h3>");
}
}
}

Update Reservation Code:


package com.hotel.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.hotel.util.DBConnection;

public class UpdateReservationServlet extends HttpServlet {


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

int reservationId = Integer.parseInt(request.getParameter("id"));

int roomNumber= Integer.parseInt(request.getParameter("room_number"));


String checkIn = request.getParameter("check_in");
String checkOut = request.getParameter("check_out");

try {

Connection conn = DBConnection.getConnection();


String sql = "UPDATE reservations SET room_number=?, check_in=?, check_out=? WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setDouble(1,roomNumber);
ps.setString(2, checkIn);
ps.setString(3, checkOut);
ps.setInt(4, reservationId);

int rowsInserted= ps.executeUpdate();


30
Advanced Java Programming (3160707) 220220131013

out.println("<html><body>");
if (rowsInserted > 0) {
out.println("<h2>Reservation Updated Successfully!</h2>");
} else {
out.println("<h2>Failed to Update Reservation.</h2>");
}
out.println("</body></html>");
} catch (Exception e) {
e.printStackTrace();
out.println("<h2>Error: " + e.getMessage() + "</h2>");
}
}
}

Delete Reservation Code:


package com.hotel.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.hotel.util.DBConnection;

public class DeleteReservationServlet extends HttpServlet {


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out= response.getWriter();
int reservationId = Integer.parseInt(request.getParameter("id"));

try {
Connection conn = DBConnection.getConnection();
String sql = "DELETE FROM reservations WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, reservationId);
int rowsInserted= ps.executeUpdate();
out.println("<html><body>");
if (rowsInserted > 0) {
out.println("<h2>Reservation Deleted Successfully!</h2>");
} else {
out.println("<h2>Failed to Delete Reservation.</h2>");
}
out.println("</body></html>");
} catch (Exception e) {
e.printStackTrace();
out.println("<h2>Error: " + e.getMessage() + "</h2>");
}
}
}

31
Advanced Java Programming (3160707) 220220131013

Output:

32
Advanced Java Programming (3160707) 220220131013

Practical-8
Aim:- Design a web page that takes the Username from user and if it is a valid username from user and if it
is a valid username prints “Welcome Username”. Use JSF to implement.

Code :-
Login.xhtml
<?xmlversion='1.0'encoding='UTF-8'?>
<!DOCTYPEhtml>
<htmlxmlns="https://www.w3.org/1999/xhtml"xmlns:h="https://java.sun.com/jsf/html">
<h:head>
<title>login</title>
</h:head>
<h:body>
<h2>210220131103-Prac8</h2>
<hr>
<h:form>
<h3>JSFLoginLogout</h3>
<h:outputTextvalue="Username"/>
<h:inputTextid="username"value="#{login.user}"></h:inputText>
<h:messagefor="username"></h:message>
<br></br><br></br>

<h:outputTextvalue="Password"/>
<h:inputSecretid="password"value="#{login.pwd}"></h:inputSecretinputSecret><h:message
for="password"></h:message>
<br></br><br></br>

<h:commandButtonaction="#{login.validateUsernamePassword}"value="Login"></h:commandButton>
</h:form>
</h:body>
</html>

Login.java
packagecom.example.jsf.beans;
importjava.io.Serializable;
importjavax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import com.example.jsf.dao.LoginDAO;
importcom.example.jsf.util.SessionUtils;

@ManagedBean@SessionScoped
publicclassLoginimplementsSerializable{
privatestaticfinallongserialVersionUID=1094801825228386363L;
private String pwd;
privateStringmsg;
privateStringuser;

publicStringgetPwd(){returnpwd;}
public void setPwd(String pwd) {
this.pwd = pwd; }
publicStringgetMsg(){returnmsg;}
publicvoidsetMsg(Stringmsg){this.msg=msg;}
33
Advanced Java Programming (3160707) 220220131013

publicStringgetUser(){returnuser;}
publicvoidsetUser(Stringuser){this.user=user;}
//validate login public String
validateUsernamePassword(){
booleanvalid=LoginDAO.validate(user,pwd);if(valid){
HttpSessionsession=SessionUtils.getSession();session.setAttribute("username",user); return
"admin";
}else{
FacesContext.getCurrentInstance().add Message( null,
newFacesMessage(FacesMessage.SEVERITY_WARN,
"Incorrect Username and Passowrd",
"PleaseentercorrectusernameandPassword")); return
"login";
}
}
//logoutevent,invalidatesessionpublicStringlogout(){
HttpSessionsession=SessionUtils.getSession();session.invalidate();return"login";
}
}

LoginDAO.java
package com.example.jsf.dao;
importjava.sql.Connection;importj
ava.sql.PreparedStatement; import
java.sql.ResultSet;
importjava.sql.SQLException;
importcom.example.jsf.util.DataConnect;
public class LoginDAO {
publicstaticbooleanvalidateStringuser,Stringpassword)
Connection con = null;
PrearedStatementPS=null;
try {
con= DataConnect.getConnection();
ps=con.prepareStatement("Selectuname,passwordfromUserswhereuname =?andpassword=?");ps.setString(1, user);
ps.setString(2, password);
ResultSetrs=ps.executeQuery(); if
(rs.next()) {
//resultfound,meansvalidinputsreturntrue;
}
returnfalse;
}catch(SQLExceptionex){
System.out.println("Loginerror"+ex.getMessage());returnfalse;DataConnect.close(con);
}
}

Faceconfig.java
<?xmlversion='1.0'encoding='UTF-8'?>
<faces-config version="2.2" xmlns="https://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee
https://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-outcome>admin</from-outcome>
<to-view-id>/admin.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
34
Advanced Java Programming (3160707) 220220131013

Dataconnet.java
packagecom.journaldev.jsf.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DataConnect {
public static Connection getConnection() { try {
Class.forName("com.mysql.jdbc.Driver"); Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/jsfdemo",
"root", " Alankar@@1976");
returncon;
}catch(Exceptionex){System.out.println("Database.getConnection()Error"
+ex.getMessage());
return null;
}
}
publicstaticvoidclose(Connectioncon){try{ con.close();
}catch(Exceptionex){System.out.println(ex);}
}
}

Output:-

35
Advanced Java Programming (3160707) 220220131013

Practical-9
Aim:- Design a Java/Web application to demonstrate hibernate framework.

Code:-

Hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>


<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hotel_db</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">UTsav@9975</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

<mapping class="com.hotel.entities.Users"/>
<mapping class="com.hotel.entities.Reservations"/>
<mapping resource="Users.hbm.xml"/>
<mapping resource="reservations.hbm.xml"/>
</session-factory>
</hibernate-configuration>

Users.hbm.xml

<?xml version="1.0" encoding="utf-8"?>


<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hotel_db</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">UTsav@9975</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>

<mapping class="com.hotel.entities.Users"/>
<mapping class="com.hotel.entities.Reservations"/>
<mapping resource="Users.hbm.xml"/>
<mapping resource="reservations.hbm.xml"/>
</session-factory>
</hibernate-configuration>

36
Advanced Java Programming (3160707) 220220131013

reservations.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.hotel.entities.Reservations" table="reservations">

<!-- Primary Key -->


<id name="id" column="id">
<generator class="identity"/>
</id>

<!-- Properties (MUST MATCH `Reservations.java`) -->


<property name="userName" column="userName" />
<property name="guestName" column="guestName" />
<property name="roomNumber" column="roomNumber" />
<property name="contactNumber" column="contactNumber" />
<property name="checkIn" column="checkIn" />
<property name="checkOut" column="checkOut" />

</class>
</hibernate-mapping>

HibernateUtil.java

package com.hotel.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
try {
// Load hibernate.cfg.xml and build SessionFactory
sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionFactory() {


return sessionFactory;
}
}

37
Advanced Java Programming (3160707) 220220131013

Users.java

package com.hotel.entities;

/**
*
* @author DISHITA
*/
public class Users {
private int id;
private String username;
private String password;
private String role; // Changed from Role enum to String

// Default constructor
public Users() {}

// Constructor
public Users(int id, String username, String password, String role) {
this.id = id;
this.username = username;
this.password = password;
this.role = role;
}

// Getters and Setters


public int getId() {
return id;
}

public void setId(int id) {


this.id = id;
}

public String getUsername() {


return username;
}

public void setUsername(String username) {


this.username = username;
}

public String getPassword() {


return password;
}

public void setPassword(String password) {


this.password = password;
}

public String getRole() {


return role;
}

public void setRole(String role) {


this.role = role; // Directly setting the role as a string
}

@Override
public String toString() {
return "User{id=" + id + ", username='" + username + "', role=" + role + "}";
}
}
38
Advanced Java Programming (3160707) 220220131013

Reservations.java

package com.hotel.entities;

public class Reservations {

private int id;


private String userName;
private String guestName;
private String roomNumber;
private String contactNumber;
private String checkIn;
private String checkOut;

public Reservations() {}

public int getId() {


return id;
}

public void setId(int id) {


this.id = id;
}

public String getUserName() {


return userName;
}

public void setUserName(String userName) {


this.userName = userName;
}

public String getGuestName() {


return guestName;
}

public void setGuestName(String guestName) {


this.guestName = guestName;
}

public String getRoomNumber() {


return roomNumber;
}

public void setRoomNumber(String roomNumber) {


this.roomNumber = roomNumber;
}

public String getContactNumber() {


return contactNumber;
}

public void setContactNumber(String contactNumber) {


this.contactNumber = contactNumber;
}

public String getCheckIn() {


return checkIn;
}

39
Advanced Java Programming (3160707) 220220131013

public void setCheckIn(String checkIn) {


this.checkIn = checkIn;
}

public String getCheckOut() {


return checkOut;
}

public void setCheckOut(String checkOut) {


this.checkOut = checkOut;
}
}

UserDAO.java

package com.hotel.dao;
import com.hotel.entities.Users;
import com.hotel.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

/**
*
* @author DISHITA
*/
public class UserDAO {

public String saveUser(Users user) {


Transaction transaction = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
transaction = session.beginTransaction();

Query<Users> query = session.createQuery("FROM Users WHERE username = :username", Users.class);


query.setParameter("username", user.getUsername());
Users existingUser = query.uniqueResult();

if (existingUser != null) {
return "Username already exists! Choose another one.";
}

session.save(user);
transaction.commit();
return "Registration successful! Redirecting to login...";
} catch (Exception e) {
if (transaction != null) transaction.rollback();
e.printStackTrace();
return "Registration failed due to an error!";
}
}

public Users validateUser(String username, String password) {


try (Session session = HibernateUtil.getSessionFactory().openSession()) {
String hql = "FROM Users WHERE username = :username AND password = :password";
Query<Users> query = session.createQuery(hql, Users.class);
query.setParameter("username", username);

40
Advanced Java Programming (3160707) 220220131013

query.setParameter("password", password);
return query.uniqueResult(); // Returns a single result or null
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

ReservationDAO.java

package com.hotel.dao;

import com.hotel.entities.Reservations;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;

import java.util.List;

public class ReservationDAO {


private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory) {


this.sessionFactory = sessionFactory;
}

public void addReservation(Reservations reservation) {


try (Session session = sessionFactory.openSession()) {
session.beginTransaction();
session.save(reservation);
session.getTransaction().commit();
}
}

public Reservations getReservationById(int id) {


try (Session session = sessionFactory.openSession()) {
return session.get(Reservations.class, id);
}
}

public List<Reservations> getAllReservations() {


try (Session session = sessionFactory.openSession()) {
return session.createQuery("FROM Reservations", Reservations.class).list();
}
}

public List<Reservations> getReservationsByUsername(String username) {


try (Session session = sessionFactory.openSession()) {
Query<Reservations> query = session.createQuery("FROM Reservations WHERE userName = :username",
Reservations.class);
query.setParameter("username", username);
return query.list();
}
}

public void updateReservation(Reservations reservation) {


try (Session session = sessionFactory.openSession()) {
session.beginTransaction();
session.merge(reservation); // safer than update
session.getTransaction().commit();
}

41
Advanced Java Programming (3160707) 220220131013

public boolean deleteReservation(int id) {


try (Session session = sessionFactory.openSession()) {
session.beginTransaction();
Reservations r = session.get(Reservations.class, id);
if (r != null) {
session.delete(r);
session.getTransaction().commit();
return true;
}
session.getTransaction().commit();
return false;
}
}

AddReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.ReservationDAO;
import com.hotel.entities.Reservations;
import com.hotel.util.HibernateUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.util.List;

public class AddReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {
reservationDAO = new ReservationDAO();
reservationDAO.setSessionFactory(HibernateUtil.getSessionFactory());
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession(false);


String username = (session != null) ? (String) session.getAttribute("username") : null;
String role = (session != null) ? (String) session.getAttribute("role") : null;

if (username == null || role == null) {


request.setAttribute("error", "You must be logged in to add a reservation.");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}

try {
Reservations reservation = new Reservations();
reservation.setUserName(username);
reservation.setGuestName(request.getParameter("guestName"));
reservation.setRoomNumber(request.getParameter("roomNumber"));
reservation.setContactNumber(request.getParameter("contactNumber"));
42
Advanced Java Programming (3160707) 220220131013

reservation.setCheckIn(request.getParameter("checkIn"));
reservation.setCheckOut(request.getParameter("checkOut"));

reservationDAO.addReservation(reservation);
request.setAttribute("message", "Reservation added successfully!");

} catch (Exception e) {
request.setAttribute("error", "Failed to add reservation: " + e.getMessage());
}

List<Reservations> reservations = "ADMIN".equalsIgnoreCase(role)


? reservationDAO.getAllReservations()
: reservationDAO.getReservationsByUsername(username);

request.setAttribute("reservations", reservations);
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);
}
}

DeleteReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.ReservationDAO;
import com.hotel.entities.Reservations;
import com.hotel.util.HibernateUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;

public class DeleteReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {
reservationDAO = new ReservationDAO();
reservationDAO.setSessionFactory(HibernateUtil.getSessionFactory());
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idStr = request.getParameter("id");

if (idStr == null || idStr.isEmpty()) {


request.setAttribute("error", "Reservation ID is missing.");
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);
return;
}

try {
int id = Integer.parseInt(idStr);
Reservations reservation = reservationDAO.getReservationById(id);
if (reservation == null) {
request.setAttribute("error", "Reservation not found.");
} else {
request.setAttribute("reservation", reservation);
}
43
Advanced Java Programming (3160707) 220220131013

} catch (NumberFormatException e) {
request.setAttribute("error", "Invalid reservation ID format.");
} catch (Exception e) {
request.setAttribute("error", "Error retrieving reservation: " + e.getMessage());
}

request.getRequestDispatcher("deleteReservation.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idStr = request.getParameter("id");


HttpSession session = request.getSession(false);
String role = (session != null) ? (String) session.getAttribute("role") : null;

if (idStr == null || idStr.isEmpty()) {


request.setAttribute("error", "Reservation ID is required.");
redirectToDashboard(role, request, response);
return;
}

try {
int id = Integer.parseInt(idStr);
boolean success = reservationDAO.deleteReservation(id);

if (success) {
request.setAttribute("message", "Reservation deleted successfully.");
} else {
request.setAttribute("error", "Reservation not found or already deleted.");
}
} catch (NumberFormatException e) {
request.setAttribute("error", "Invalid reservation ID format.");
} catch (Exception e) {
request.setAttribute("error", "Failed to delete reservation: " + e.getMessage());
}

redirectToDashboard(role, request, response);


}

private void redirectToDashboard(String role, HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
if ("ADMIN".equalsIgnoreCase(role)) {
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);
} else {
request.getRequestDispatcher("customerDashboard.jsp").forward(request, response);
}
}
}

LoginReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.UserDAO;
import com.hotel.entities.Users;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
44
Advanced Java Programming (3160707) 220220131013

import java.io.IOException;

public class LoginReservationServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

String username = request.getParameter("username");


String password = request.getParameter("password");

UserDAO userDAO = new UserDAO();


Users user = userDAO.validateUser(username, password);

if (user != null) {
// Create session and store user info
HttpSession session = request.getSession();
session.setAttribute("username", user.getUsername());
session.setAttribute("role", user.getRole());

if (user.getRole().equalsIgnoreCase("ADMIN")) {
response.sendRedirect("adminDashboard.jsp");
} else {
response.sendRedirect("customerDashboard.jsp");
}

} else {
request.setAttribute("error", "Invalid username or password.");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}

LogoutReservationServlet.java

package com.hotel.servlets;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;

public class LogoutServlet extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession(false);


if (session != null) {
session.removeAttribute("user"); // Optional: Remove specific session attribute
session.invalidate(); // Invalidate the session
}
response.sendRedirect("login.jsp?message=You have been logged out successfully.");
}
}

45
Advanced Java Programming (3160707) 220220131013

RegisterReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.UserDAO;
import com.hotel.entities.Users;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RegisterReservationServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

String username = request.getParameter("username");


String password = request.getParameter("password");
String role = request.getParameter("role");

Users user = new Users();


user.setUsername(username);
user.setPassword(password);
user.setRole(role);

UserDAO dao = new UserDAO();


String resultMessage = dao.saveUser(user);

request.setAttribute("message", resultMessage);

request.getRequestDispatcher("register.jsp").forward(request, response);
}
}

UpdateReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.ReservationDAO;
import com.hotel.entities.Reservations;
import com.hotel.util.HibernateUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;

public class UpdateReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {
reservationDAO = new ReservationDAO();
reservationDAO.setSessionFactory(HibernateUtil.getSessionFactory()); // important
}

@Override

46
Advanced Java Programming (3160707) 220220131013

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {

String idStr = request.getParameter("id");


HttpSession session = request.getSession(false);

try {
int id = Integer.parseInt(idStr);
Reservations reservation = reservationDAO.getReservationById(id);

if (reservation != null) {
reservation.setGuestName(request.getParameter("guestName"));
reservation.setRoomNumber(request.getParameter("roomNumber"));
reservation.setContactNumber(request.getParameter("contactNumber"));
reservation.setCheckIn(request.getParameter("checkIn"));
reservation.setCheckOut(request.getParameter("checkOut"));

reservationDAO.updateReservation(reservation);

}
} catch (Exception e) {

response.sendRedirect("ViewReservationsServlet");
}
}

ViewReservationsServlet.java

package com.hotel.servlets;

import com.hotel.dao.ReservationDAO;
import com.hotel.entities.Reservations;
import com.hotel.util.HibernateUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.util.List;

public class ViewReservationsServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {

reservationDAO = new ReservationDAO();


reservationDAO.setSessionFactory(HibernateUtil.getSessionFactory());
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession(false);

if (session == null || session.getAttribute("username") == null || session.getAttribute("role") == null) {


response.sendRedirect("login.jsp");
return;
47
Advanced Java Programming (3160707) 220220131013

String username = (String) session.getAttribute("username");


String role = (String) session.getAttribute("role");

String action = request.getParameter("action");


String idParam = request.getParameter("id");

try {

if ("edit".equalsIgnoreCase(action) && idParam != null) {


int id = Integer.parseInt(idParam);
Reservations reservation = reservationDAO.getReservationById(id);

if (reservation != null) {
request.setAttribute("reservation", reservation);
request.getRequestDispatcher("updateReservation.jsp").forward(request, response);
return;
} else {
request.setAttribute("error", "Reservation not found.");
request.getRequestDispatcher("error.jsp").forward(request, response);
return;
}
}

List<Reservations> reservations;
if ("ADMIN".equalsIgnoreCase(role)) {
reservations = reservationDAO.getAllReservations();
} else {
reservations = reservationDAO.getReservationsByUsername(username);
}

request.setAttribute("reservations", reservations);
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);

} catch (Exception e) {
request.setAttribute("error", "Error fetching reservations: " + e.getMessage());
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
}

Output:

48
Advanced Java Programming (3160707) 220220131013

49
Advanced Java Programming (3160707) 220220131013

Practical-10
Aim:- Design a Java/Web application to demonstrate spring framework. Use of MVC
architecture is optional.

Code:-
applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

<!-- DataSource Bean -->


<bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/hotel_db"/>
<property name="username" value="root"/>
<property name="password" value="UTsav@9975"/>
</bean>

<!-- JdbcTemplate Bean -->


<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>

<!-- Reservation DAO Bean -->


<bean id="reservationDAO" class="com.hotel.dao.ReservationDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

<!-- User DAO Bean -->


<bean id="userDAO" class="com.hotel.dao.UserDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>

</beans>

User.java

package com.hotel.model;

/**
*
* @author DISHITA
*/
public class User {
private int id;
private String username;
private String password;
private String role;

50
Advanced Java Programming (3160707) 220220131013

// Getters and setters


public int getId() { return id; }
public void setId(int id) { this.id = id; }

public String getUsername() { return username; }


public void setUsername(String username) { this.username = username; }

public String getPassword() { return password; }


public void setPassword(String password) { this.password = password; }

public String getRole() { return role; }


public void setRole(String role) { this.role = role; }
}

Reservation.java

package com.hotel.model;

public class Reservation {


private int id;
private String userName;
private String guestName;
private String roomNumber;
private String contactNumber;
private String checkIn;
private String checkOut;

public int getId() {


return id;
}

public void setId(int id) {


this.id = id;
}

public String getUserName() {


return userName;
}

public void setUserName(String userName) {


this.userName = userName;
}

public String getGuestName() {


return guestName;
}

public void setGuestName(String guestName) {


this.guestName = guestName;
}

public String getRoomNumber() {


return roomNumber;
}

public void setRoomNumber(String roomNumber) {


this.roomNumber = roomNumber;
}

51
Advanced Java Programming (3160707) 220220131013

public String getContactNumber() {


return contactNumber;
}

public void setContactNumber(String contactNumber) {


this.contactNumber = contactNumber;
}

public String getCheckIn() {


return checkIn;
}

public void setCheckIn(String checkIn) {


this.checkIn = checkIn;
}

public String getCheckOut() {


return checkOut;
}

public void setCheckOut(String checkOut) {


this.checkOut = checkOut;
}
}

UserDAO.java

package com.hotel.dao;

import com.hotel.model.User;
import org.springframework.jdbc.core.JdbcTemplate;

public class UserDAO {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {


this.jdbcTemplate = jdbcTemplate;
}

public boolean validateUser(String username, String password) {


String query = "SELECT COUNT(*) FROM users WHERE username = ? AND password = ?";
int count = jdbcTemplate.queryForObject(query, Integer.class, username, password);
return count > 0;
}

public String getRoleByUsername(String username) {


String sql = "SELECT role FROM users WHERE username = ?";
try {
return jdbcTemplate.queryForObject(sql, String.class, username);
} catch (Exception e) {
return null;
}
}

52
Advanced Java Programming (3160707) 220220131013

public boolean saveUser(User user) {


String sql = "INSERT INTO users (username, password, role) VALUES (?, ?, ?)";
int rows = jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getRole());
return rows > 0;
}

public boolean userExists(String username) {


String sql = "SELECT COUNT(*) FROM users WHERE username = ?";
int count = jdbcTemplate.queryForObject(sql, Integer.class, username);
return count > 0;
}
}

ReservationDAO.java

package com.hotel.dao;

import com.hotel.model.Reservation;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.dao.EmptyResultDataAccessException;

public class ReservationDAO {


private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {


this.jdbcTemplate = jdbcTemplate;
}

public Reservation getReservationById(int id) {


String sql = "SELECT * FROM reservations WHERE id = ?";
try {
return jdbcTemplate.queryForObject(sql, new Object[]{id}, new ReservationRowMapper());
} catch (EmptyResultDataAccessException e) {
return null; // Return null if no reservation is found
}
}

public void addReservation(Reservation reservation) {


String sql = "INSERT INTO reservations (userName, guestName, roomNumber, contactNumber,
checkIn, checkOut) VALUES (?, ?, ?, ?, ?, ?)";
jdbcTemplate.update(sql,
reservation.getUserName(),
reservation.getGuestName(),
reservation.getRoomNumber(),
reservation.getContactNumber(),
reservation.getCheckIn(),
reservation.getCheckOut()
);
}

53
Advanced Java Programming (3160707) 220220131013

public List<Reservation> getAllReservations() {


String sql = "SELECT * FROM reservations";
return jdbcTemplate.query(sql, new ReservationRowMapper());
}

public List<Reservation> getReservationsByUser(String username) {


String sql = "SELECT * FROM reservations WHERE userName = ?";
return jdbcTemplate.query(sql, new ReservationRowMapper(), username);
}

public void updateReservation(Reservation reservation) {


String sql = "UPDATE reservations SET guestName = ?, roomNumber = ?, contactNumber = ?,
checkIn = ?, checkOut = ? WHERE id = ?";
jdbcTemplate.update(sql,
reservation.getGuestName(),
reservation.getRoomNumber(),
reservation.getContactNumber(),
reservation.getCheckIn(),
reservation.getCheckOut(),
reservation.getId() // Corrected: Update by 'id' instead of 'username'
);
}

public void deleteReservation(int id) {


String sql = "DELETE FROM reservations WHERE id = ?";
jdbcTemplate.update(sql, id);
}

private static class ReservationRowMapper implements RowMapper<Reservation> {


@Override
public Reservation mapRow(ResultSet rs, int rowNum) throws SQLException {
Reservation r = new Reservation();
r.setId(rs.getInt("id"));
r.setUserName(rs.getString("userName"));
r.setGuestName(rs.getString("guestName"));
r.setRoomNumber(rs.getString("roomNumber"));
r.setContactNumber(rs.getString("contactNumber"));
r.setCheckIn(rs.getString("checkIn"));
r.setCheckOut(rs.getString("checkOut"));
return r;
}
}
}

AddReservationServlet.java

package com.hotel.servlet;

import com.hotel.dao.ReservationDAO;
import com.hotel.model.Reservation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import jakarta.servlet.ServletException;

54
Advanced Java Programming (3160707) 220220131013

import jakarta.servlet.http.*;
import java.io.IOException;

public class AddReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");


reservationDAO = (ReservationDAO) context.getBean("reservationDAO");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession();


String username = (String) session.getAttribute("username");

if (username == null) {
request.setAttribute("error", "You must be logged in to add a reservation.");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}

String guestName = request.getParameter("guestName");


String roomNumber = request.getParameter("roomNumber");
String contactNumber = request.getParameter("contactNumber");
String checkIn = request.getParameter("checkIn");
String checkOut = request.getParameter("checkOut");

Reservation reservation = new Reservation();


reservation.setUserName(username);
reservation.setGuestName(guestName);
reservation.setRoomNumber(roomNumber);
reservation.setContactNumber(contactNumber);
reservation.setCheckIn(checkIn);
reservation.setCheckOut(checkOut);

reservationDAO.addReservation(reservation);

request.setAttribute("message", "Reservation\n" +
" // Inform the user and forward to the view reservations page\n" +
" added successfully!");
request.getRequestDispatcher("viewReservation.jsp").forward(request, response);
}
}

55
Advanced Java Programming (3160707) 220220131013

DeleteReservationServlet.java

package com.hotel.servlets;

import com.hotel.dao.ReservationDAO;
import com.hotel.entities.Reservations;
import com.hotel.util.HibernateUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;

public class DeleteReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {
reservationDAO = new ReservationDAO();
reservationDAO.setSessionFactory(HibernateUtil.getSessionFactory());
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idStr = request.getParameter("id");

if (idStr == null || idStr.isEmpty()) {


request.setAttribute("error", "Reservation ID is missing.");
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);
return;
}

try {
int id = Integer.parseInt(idStr);
Reservations reservation = reservationDAO.getReservationById(id);
if (reservation == null) {
request.setAttribute("error", "Reservation not found.");
} else {
request.setAttribute("reservation", reservation);
}
} catch (NumberFormatException e) {
request.setAttribute("error", "Invalid reservation ID format.");
} catch (Exception e) {
request.setAttribute("error", "Error retrieving reservation: " + e.getMessage());
}

request.getRequestDispatcher("deleteReservation.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idStr = request.getParameter("id");


HttpSession session = request.getSession(false);
String role = (session != null) ? (String) session.getAttribute("role") : null;

56
Advanced Java Programming (3160707) 220220131013

if (idStr == null || idStr.isEmpty()) {


request.setAttribute("error", "Reservation ID is required.");
redirectToDashboard(role, request, response);
return;
}

try {
int id = Integer.parseInt(idStr);
boolean success = reservationDAO.deleteReservation(id);

if (success) {
request.setAttribute("message", "Reservation deleted successfully.");
} else {
request.setAttribute("error", "Reservation not found or already deleted.");
}
} catch (NumberFormatException e) {
request.setAttribute("error", "Invalid reservation ID format.");
} catch (Exception e) {
request.setAttribute("error", "Failed to delete reservation: " + e.getMessage());
}

redirectToDashboard(role, request, response);


}

private void redirectToDashboard(String role, HttpServletRequest request, HttpServletResponse


response)
throws ServletException, IOException {
if ("ADMIN".equalsIgnoreCase(role)) {
request.getRequestDispatcher("viewReservations.jsp").forward(request, response);
} else {
request.getRequestDispatcher("customerDashboard.jsp").forward(request, response);
}
}
}

LoginServlet.java

package com.hotel.servlet;

import com.hotel.dao.UserDAO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;

import java.io.IOException;

public class LoginServlet extends HttpServlet {

private UserDAO userDAO;

@Override
public void init() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
userDAO = (UserDAO) context.getBean("userDAO");
}

57
Advanced Java Programming (3160707) 220220131013

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String username = request.getParameter("username");


String password = request.getParameter("password");

if (userDAO.validateUser(username, password)) {
String role = userDAO.getRoleByUsername(username);

// Create session and store username and role


HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("role", role);

// Redirect based on role


if ("ADMIN".equalsIgnoreCase(role)) {
response.sendRedirect("adminDashboard.jsp");
} else if ("CUSTOMER".equalsIgnoreCase(role)) {
response.sendRedirect("customerDashboard.jsp");
} else {
session.invalidate();
request.setAttribute("error", "Invalid role assigned to user.");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
request.setAttribute("error", "Invalid username or password.");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}

LogoutReservationServlet.java

package com.hotel.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;
import java.io.IOException;

public class LogoutServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession(false);


if (session != null) {
session.invalidate();
}

request.setAttribute("message", "You have been logged out successfully.");


request.getRequestDispatcher("login.jsp").forward(request, response);
}
}

58
Advanced Java Programming (3160707) 220220131013

RegisterServlet.java

package com.hotel.servlet;
import com.hotel.dao.UserDAO;
import com.hotel.model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RegisterServlet extends HttpServlet {

private UserDAO userDAO;

@Override
public void init() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
userDAO = (UserDAO) context.getBean("userDAO");
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String username = request.getParameter("username");


String password = request.getParameter("password");

User user = new User();


user.setUsername(username);
user.setPassword(password);
user.setRole("customer"); // Default role for registered users

if (userDAO.saveUser(user)) {
response.sendRedirect("login.jsp");
} else {
response.getWriter().println("Registration Failed!");
}
}
}

UpdateReservationServlet.java

package com.hotel.servlet;

import com.hotel.dao.ReservationDAO;
import com.hotel.model.Reservation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.net.URLEncoder;

59
Advanced Java Programming (3160707) 220220131013

public class UpdateReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

@Override
public void init() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
reservationDAO = (ReservationDAO) context.getBean("reservationDAO");
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idParam = request.getParameter("id");

if (idParam == null || idParam.trim().isEmpty()) {

response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("Missing
reservation ID", "UTF-8"));
return;
}

try {
int id = Integer.parseInt(idParam.trim());
Reservation reservation = reservationDAO.getReservationById(id);

if (reservation != null) {
request.setAttribute("reservation", reservation);
request.getRequestDispatcher("updateReservation.jsp").forward(request, response);
} else {
request.setAttribute("error", "Reservation not found.");
request.getRequestDispatcher("viewReservation.jsp").forward(request, response);
}
} catch (NumberFormatException e) {
request.setAttribute("error", "Invalid reservation ID.");
request.getRequestDispatcher("viewReservation.jsp").forward(request, response);
}
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String idParam = request.getParameter("id");

if (idParam == null || idParam.trim().isEmpty()) {


response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("Missing
reservation ID", "UTF-8"));
return;
}

try {
int id = Integer.parseInt(idParam.trim());
Reservation existingReservation = reservationDAO.getReservationById(id);
if (existingReservation == null) {
response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("Reservation
not found", "UTF-8"));
return;
}

60
Advanced Java Programming (3160707) 220220131013

// Get updated form values


String guestName = request.getParameter("guestName");
String roomNumber = request.getParameter("roomNumber");
String checkIn = request.getParameter("checkIn");
String checkOut = request.getParameter("checkOut");

if (guestName == null || guestName.trim().isEmpty()


|| roomNumber == null || roomNumber.trim().isEmpty()
|| checkIn == null || checkIn.trim().isEmpty()
|| checkOut == null || checkOut.trim().isEmpty()) {
response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("All fields must
be filled out", "UTF-8"));
return;
}

existingReservation.setGuestName(guestName);
existingReservation.setRoomNumber(roomNumber);
existingReservation.setCheckIn(checkIn);
existingReservation.setCheckOut(checkOut);

reservationDAO.updateReservation(existingReservation);

response.sendRedirect("viewReservation.jsp?success=" + URLEncoder.encode("Reservation
updated successfully", "UTF-8"));

} catch (NumberFormatException e) {
response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("Invalid
reservation ID", "UTF-8"));
} catch (Exception e) {
e.printStackTrace();
response.sendRedirect("viewReservation.jsp?error=" + URLEncoder.encode("Update failed",
"UTF-8"));
}
}
}

ViewReservationServlet.java

package com.hotel.servlet;

import com.hotel.dao.ReservationDAO;
import com.hotel.model.Reservation;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
import java.util.List;

public class ViewReservationServlet extends HttpServlet {

private ReservationDAO reservationDAO;

61
Advanced Java Programming (3160707) 220220131013

@Override
public void init() throws ServletException {

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");


reservationDAO = (ReservationDAO) context.getBean("reservationDAO");
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

HttpSession session = request.getSession();


String username = (String) session.getAttribute("username");
String role = (String) session.getAttribute("role");

if (username == null) {

response.sendRedirect("login.jsp");
return;
}

List<Reservation> reservations;
if ("admin".equals(role)) {

reservations = reservationDAO.getAllReservations();
} else {

reservations = reservationDAO.getReservationsByUser(username);
}

request.setAttribute("reservations", reservations);
request.getRequestDispatcher("viewReservation.jsp").forward(request, response);
}
}

Output:

62
Advanced Java Programming (3160707) 220220131013

63
Advanced Java Programming (3160707) 220220131013

64

You might also like