//First, create a database named 'user_db' and a table named 'users' sql: CREATE DATABASE user_db; USE user_db; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); -- Insert a sample user (password should be hashed in real applications) INSERT INTO users (username, password) VALUES ('testuser', 'password123'); //login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h2>Login</h2> <form action="LoginServlet" method="post"> Username: <input type="text" name="username" required><br><br> Password: <input type="password" name="password" required><br><br> <input type="submit" value="Login"> </form> </body> </html> //LoginServlet.java import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); // JDBC connection setup String jdbcURL = "jdbc:mysql://localhost:3306/user_db"; String dbUser = "root"; // Change as needed String dbPassword = "password"; // Change as needed try (Connection conn = DriverManager.getConnection(jdbcURL, dbUser, dbPassword)) { String sql = "SELECT * FROM users WHERE username = ? AND password = ?"; PreparedStatement statement = conn.prepareStatement(sql); statement.setString(1, username); statement.setString(2, password); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { // User found, create a cookie Cookie loginCookie = new Cookie("username", username); loginCookie.setMaxAge(30 * 60); // Set cookie to expire in 30 minutes response.addCookie(loginCookie); // Redirect to welcome page response.sendRedirect("welcome.jsp"); } else { // Invalid credentials PrintWriter out = response.getWriter(); out.println("<font color=red>Invalid username or password.</font>"); request.getRequestDispatcher("login.html").include(request, response); } } catch (Exception e) { e.printStackTrace(); } } } //logout.java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/LogoutServlet") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie loginCookie = new Cookie("username", null); loginCookie.setMaxAge(0); // Delete the cookie response.addCookie(loginCookie); response.sendRedirect("login.html"); } } //welcome.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="javax.servlet.http.Cookie"%> <%@ page import="javax.servlet.http.HttpServletRequest"%> <% String username = null; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if ("username".equals(cookie.getName())) { username = cookie.getValue(); break; } } } if (username == null) { response.sendRedirect("login.html"); } %> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Welcome</title> </head> <body> <h2>Welcome, <%= username %>!</h2> <form action="LogoutServlet" method="post"> <input type="submit" value="Logout"> </form> </body> </html>