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