ADVANCED JAVA PROGRAMMING
20CS5302
HOME ASSIGNMENT
SUBMITTED BY:
D.Leela Aditya
228W1A0582
CSE-2
III/IV BTECH
SUBMITTED TO:
J.V.D.Prasad
Assistant Professor
Department of CSE
TASK 01: Design RMI application for getting the final total price of the shopping list with
some of the following items and quantities chosen by the user from the client side. On the
server, the item list contains the prices. As example potatoes 17 Rs per kg, tomatoes 8 Rs per
kg, onions 20 Rs per 5 kg, and spinach 12 Rs per kg, etc.
Program:
BillTotal.java
import java.rmi.*;
public interface BillTotal extends Remote {
public long total(int[] a) throws RemoteException;
}
BillTotalRemote.java
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class BillTotalRemote extends UnicastRemoteObject implements BillTotal {
public BillTotalRemote() throws RemoteException {
super();
}
public long total(int[] a) throws RemoteException{
long sum = 0;
sum += a[0] * 17; // Potatoes price: Rs. 17/kg
sum += a[1] * 8; // Tomatoes price: Rs. 8/kg
sum += a[2] * 20; // Onions price: Rs. 20/kg
sum += a[3] * 12; // Spinach price: Rs. 12/kg
return sum;
}
}
MyClient.java
import java.rmi.*;
import java.util.*;
public class MyClient {
public static void main(String[] args) throws Exception {
try {
int[] a = new int[4];
BillTotal stub = (BillTotal) Naming.lookup("rmi://localhost/totalbill");
Scanner sc = new Scanner(System.in);
System.out.println("Enter no. of kgs of Potatoes:");
a[0] = sc.nextInt();
System.out.println("Enter no. of kgs of Tomatoes:");
a[1] = sc.nextInt();
System.out.println("Enter no. of kgs of Onions:");
a[2] = sc.nextInt();
System.out.println("Enter no. of kgs of Spinach:");
a[3] = sc.nextInt();
System.out.println("The total cost is: " + stub.total(a));
} catch (Exception e) {
System.out.println(e);
}
}
}
MyServer.java
import java.rmi.*;
import java.rmi.LocateRegistry;
public class MyServer {
public static void main(String[] args) throws Exception {
try {
BillTotal stub = new BillTotalRemote();
LocateRegistry.createRegistry(2000);
Naming.rebind("totalbill", stub);
System.out.println("Server is ready");
System.out.println("Remote object is ready");
} catch (Exception e) {
System.out.println(e);
}
}
}
Output:
TASK 02: Implement TCP Server and Client for transferring files using Socket and Server
Socket.
Program:
FileTransferClient.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class FileTransferClient extends JFrame
{
JPanel jp, jp1;
JLabel titleLabel, ipLabel, portLabel, fileLabel;
JTextField ipField, portField, fileField;
JButton browseButton, sendButton;
File selectedFile;
public static void main(String args[])
{
new FileTransferClient();
}
public FileTransferClient()
{
jp = new JPanel();
jp1 = new JPanel();
titleLabel = new JLabel("<html><h2>File Transfer Client</h2></html>",
SwingConstants.CENTER);
ipLabel = new JLabel("Server IP Address:");
ipField = new JTextField("localhost", 20);
portLabel = new JLabel("Port:");
portField = new JTextField("4567", 20);
fileLabel = new JLabel("Select File:");
fileField = new JTextField(20);
fileField.setEditable(false);
browseButton = new JButton("Browse");
browseButton.addActionListener(new BrowseAction());
sendButton = new JButton("Send");
sendButton.addActionListener(new SendAction());
jp.setLayout(new FlowLayout());
jp1.setLayout(new GridLayout(4, 2));
jp.add(titleLabel);
jp1.add(ipLabel);
jp1.add(ipField);
jp1.add(portLabel);
jp1.add(portField);
jp1.add(fileLabel);
jp1.add(fileField);
jp1.add(browseButton);
jp1.add(sendButton);
setLayout(new BorderLayout());
add(jp, BorderLayout.NORTH);
add(jp1, BorderLayout.CENTER);
setTitle("File Transfer Client");
setSize(500, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private class BrowseAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JFileChooser fileChooser = new JFileChooser();
if (fileChooser.showOpenDialog(FileTransferClient.this) ==
JFileChooser.APPROVE_OPTION)
{
selectedFile = fileChooser.getSelectedFile();
fileField.setText(selectedFile.getAbsolutePath());
}
}
}
private class SendAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ip = ipField.getText();
int port;
try
{
port = Integer.parseInt(portField.getText());
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Invalid port number.");
return;
}
if (selectedFile == null)
{
JOptionPane.showMessageDialog(null, "Please select a file first.");
return;
}
try
{
Socket s = new Socket(ip, port);
System.out.println("Connected to Server");
DataOutputStream dos = new DataOutputStream(s.getOutputStream());
FileInputStream fis = new FileInputStream(selectedFile);
dos.writeUTF(selectedFile.getName());
dos.writeLong(selectedFile.length());
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fis.read(buffer)) > 0)
{
dos.write(buffer, 0, bytesRead);
}
System.out.println("File sent successfully!");
JOptionPane.showMessageDialog(null, "File sent successfully!");
fis.close();
dos.close();
s.close();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(null, "Error: " + ex.getMessage());
}
}
}
}
FileTransferServer.java:
import java.io.*;
import java.net.*;
public class FileTransferServer
{
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket = new ServerSocket(4567);
System.out.println("Server is ready and waiting for connections...");
while (true)
{
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
DataInputStream dis = new DataInputStream(socket.getInputStream());
String fileName = dis.readUTF();
long fileSize = dis.readLong();
File receivedFile = new File("received_" + fileName);
FileOutputStream fos = new FileOutputStream(receivedFile);
byte[] buffer = new byte[4096];
int bytesRead;
long totalRead = 0;
while (totalRead < fileSize && (bytesRead = dis.read(buffer)) > 0)
{
fos.write(buffer, 0, bytesRead);
totalRead += bytesRead;
}
System.out.println("File " + fileName + " received successfully.");
fos.close();
dis.close();
socket.close();
}
}
}
Output:
TASK 03: Write a GUI based JDBC program to insert data into student database and retrieve
information based on particular queries.
Program:
Registerform.java
import javax.swing.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
public class registerform extends JFrame {
JPanel jp, jp1;
JLabel l, l1, l2, l3, l4, lab;
JTextField f1, f2;
JPasswordField p1, p2;
JButton b1, b2;
String un, em, pd, cp;
Connection con;
Statement st;
ResultSet rs;
public static void main(String args[]) {
new registerform();
}
public registerform() {
jp = new JPanel();
jp1 = new JPanel();
ImageIcon i1 = new ImageIcon("student.gif");
lab = new JLabel(i1);
l = new JLabel("<html><u>STUDENT REGISTRATION FORM</u></html>");
f1 = new JTextField(30);
f2 = new JTextField(30);
p1 = new JPasswordField(20);
p2 = new JPasswordField(20);
l1 = new JLabel("STUDENT NAME ");
l2 = new JLabel("EMAIL");
l3 = new JLabel("PASSWORD");
l4 = new JLabel("CONFIRM PASSWORD");
b1 = new JButton("SUBMIT");
b2 = new JButton("CLEAR");
jp.setLayout(new FlowLayout());
jp1.setLayout(new GridLayout(6, 2));
jp.add(lab);
jp.add(l);
jp1.add(l1);
jp1.add(f1);
jp1.add(l2);
jp1.add(f2);
jp1.add(l3);
jp1.add(p1);
jp1.add(l4);
jp1.add(p2);
jp1.add(b1);
jp1.add(b2);
setLayout(new BorderLayout());
add(jp, BorderLayout.NORTH);
add(jp1, BorderLayout.CENTER);
setVisible(true);
setSize(500, 500);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b1.addActionListener(new Action());
b2.addActionListener(new Action());
}
private class Action implements ActionListener {
public void actionPerformed(ActionEvent e) {
String bc = e.getActionCommand();
if (bc.equals("SUBMIT")) {
un = f1.getText();
em = f2.getText();
pd = new String(p1.getPassword());
cp = new String(p2.getPassword());
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:XE";
con = DriverManager.getConnection(url, "system", "abc123");
st = con.createStatement();
if (pd.equals(cp)) {
String str = "INSERT INTO stdreg_new(name, email, password) VALUES ('"
+ un + "', '" + em + "', '" + pd + "')";
st.executeUpdate(str);
JOptionPane.showMessageDialog(null, "Registration Completed
Successfully.");
f1.setText("");
f2.setText("");
p1.setText("");
p2.setText("");
} else {
JOptionPane.showMessageDialog(null, "WARNING :: Your PASSWORD and
Confirm Password do not match");
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
} else if (bc.equals("CLEAR")) {
f1.setText("");
f2.setText("");
p1.setText("");
p2.setText("");
}
}
}
}
Output:
TASK 04: Write a java Servlet program to change the Background color of the page by the
color selected by the user from the list box on HTML page.
Program:
color.html
<!DOCTYPE html>
<html>
<head>
<title>Change Background Color</title>
</head>
<body>
<form action="http://localhost:9999/hello/ChangeColor" method="POST"><label
for="color">Select Background Color:</label>
<select name="color" id="color">
<option value="white">White</option>
<option value="lightblue">Light Blue</option>
<option value="lightgreen">Light Green</option>
<option value="yellow">Yellow</option>
<option value="pink">Pink</option>
<option value="lightgrey">Light Grey</option>
<option value="lavender">Lavender</option>
</select>
<br><br>
<button type="submit">Change Color</button>
</form>
</body>
</html>
ChangeColor.jsp
<!DOCTYPE html>
<html>
<head>
<title>Change Background Color</title>
</head>
<body>
<form action="http://localhost:9999/karthikeya/ChangeColor" method="POST">
<label for="color">Select Background Color:</label>
<select name="color" id="color">
<option value="white">White</option>
<option value="lightblue">Light Blue</option>
<option value="lightgreen">Light Green</option>
<option value="yellow">Yellow</option>
<option value="pink">Pink</option>
<option value="lightgrey">Light Grey</option>
<option value="lavender">Lavender</option>
</select>
<br><br>
<button type="submit">Change Color</button>
</form>
</body>
</html>
Web.xml
<web-app>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>ChangeColor</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/ChangeColor</url-pattern>
</servlet-mapping>
</web-app>
Output:
TASK 05: Design and Develop a web application for Product Monitoring System to perform
the following activities using Servlets.
View Product details.
Update Product.
Delete Product.
Program:
index.html
<html>
<body>
<div>
<h1> Welcome to Product Monitoring System </h1>
<form action="http://localhost:9999/hello/Option">
<input type="radio" name="uchoice" value="view"> View Product info <br>
<input type="radio" name="uchoice" value="update"> Update Product info
<br>
<input type="radio" name="uchoice" value="delete"> Delete Product info
<br>
<br>
<input style="margin-left: 5px;" type="submit" value="enter">
</form>
</div>
</body>
</html>
Option.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Option extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
String uchoice=req.getParameter("uchoice");
res.setContentType("text/html");
switch(uchoice)
{
case "view":view(res); break;
case "update":update(res); break;
out.println("<br><input
type='submit' value='enter'>");
out.println("</body>");
out.close();
}
public static void update(HttpServletResponse res) throws IOException
{
PrintWriter out=res.getWriter();
out.println("<form action='http://localhost:9999/hello/Update'>");
out.println("Enter product Name : <input type='text' name='mname'><br>");
out.println("<br><input type='submit' value='enter'>");
out.println("</body>");
out.close();
}
public static void delete(HttpServletResponse res) throws IOException
{
PrintWriter out=res.getWriter();
out.println("<form action='http://localhost:9999/ESWAR/Delete'>");
out.println("Enter prroduc Name : <input type='text' name='mname'><br>");
out.println("<br><input type='submit' value='enter'>");
out.println("</body>");
out.close();
}
View.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class View extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
HttpSession session=req.getSession();
String name=req.getParameter("mname");
String[] details=(String[])session.getAttribute(name);
if(details==null)
{
out.println("<h1 style='color:red'> Product is not available ! </h1>");
}
else
{
out.println("<h2 style='color:tomato;margin-left:5px;text-transform:
uppercase;'>"+details[0]+"</h2>");
out.println("<ul><li><h3 style='color:grey;text-transform:
uppercase'>"+details[1]+"</h3></li>");
out.println("<li><h3 style='color:grey;text-transform:
uppercase'>"+details[2]+"</h3></li>");
out.println("<li><h3 style='color:grey;text-transform:
uppercase'>"+details[3]+"</h3></li></ul>");
}
out.close();
}
}
Update.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Update extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
HttpSession session=req.getSession();
String name=req.getParameter("mname");
String[] details=(String[])session.getAttribute(name);
if(details==null)
{
out.println("<h1 style='color:red'> Product is not added ! </h1>");
}
else
{
out.println("<body><form action='http://localhost:9999/hello/Add'>");
out.println("<h3>Enter storage value : <input type='text' name='mstorage'></h3>");
out.println("<h3>Enter battery backup : <input type='text' name='mbattery'></h3>");
out.println("<h3>Enter item price : <input type='text' name='mprice'></h3>");
out.print("<input type='hidden' name='mname' value="+name+">");
out.println("<br><input type='submit' value='enter'>");
}
out.close();
}
}
Delete.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Delete extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
res.setContentType("text/html");
String name=req.getParameter("mname");
HttpSession session=req.getSession();
PrintWriter out=res.getWriter();
if(session.getAttribute(name)!=null)
{
session.removeAttribute(name);
out.println("<h1 style='color:green;'>Product deleted successfully</h1>");
}
else
{
out.println("<h1 style='color:red'> Product is not available ! </h1>");
}
out.close();
}
}
Items.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Items extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
res.setContentType("text/html");
String details[][]=new String[3][4];
details[0][0]="IPhone 13";
details[0][1]="128gb";
details[0][2]="5000 mAh";
details[0][3]="65000";
details[1][0]="HP Pavilion 15";
details[1][1]="512 SSD";
details[1][2]="32 hrs";
details[1][3]="85000";
details[2][0]="HeadPhone";
details[2][1]="3.5 jack";
details[2][2]="28 hrs";
details[2][3]="1200";
HttpSession session=req.getSession();
session.setAttribute(details[0][0],details[0]);
session.setAttribute(details[1][0],details[1]);
session.setAttribute(details[2][0],details[2]);
PrintWriter out=res.getWriter();
out.println("<h1 style='color:green;'>Completed successfully</h1>");
out.close();
}
}
Add.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Add extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
res.setContentType("text/html");
String details[]=new String[4];
details[0]=req.getParameter("mname");
details[1]=req.getParameter("mstorage");
details[2]=req.getParameter("mbattery");
details[3]=req.getParameter("mprice");
HttpSession session=req.getSession();
session.setAttribute(details[0],details);
PrintWriter out=res.getWriter();
out.println("<h1 style='color:green;'>Completed successfully</h1>");
out.close();
}
}
web.xml
<web-app>
<servlet>
<servlet-name>Add</servlet-name>
<servlet-class>Add</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Add</servlet-name>
<url-pattern>/Add</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>View</servlet-name>
<servlet-class>View</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>View</servlet-name>
<url-pattern>/View</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Update</servlet-name>
<servlet-class>Update</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Update</servlet-name>
<url-pattern>/Update</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Delete</servlet-name>
<servlet-class>Delete</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Delete</servlet-name>
<url-pattern>/Delete</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Items</servlet-name>
<servlet-class>Items</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Items</servlet-name>
<url-pattern>/Items</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Option</servlet-name>
<servlet-class>Option</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Option</servlet-name>
<url-pattern>/Option</url-pattern>
</servlet-mapping>
</web-app>
Output: