8. Create login form and perform state management using Cookies, HttpSession and URL Rewriting.
----------------------------------------------------------------------
HTML Login Form (login.html)
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h2>Login Form</h2>
<form action="LoginServlet" method="post">
Username: <input type="text" name="uname"><br>
Password: <input type="password" name="pass"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
---------------------------------------------------------
Login Servlet (LoginServlet.java)
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
public class LoginServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uname = request.getParameter("uname");
String pass = request.getParameter("pass");
if(uname.equals("admin") && pass.equals("admin123")) {
// COOKIE
Cookie c = new Cookie("username", uname);
response.addCookie(c);
// SESSION
HttpSession session = request.getSession();
session.setAttribute("user", uname);
// REDIRECTION with URL rewriting
response.sendRedirect("UrlRewriteServlet?user=" + uname);
} else {
PrintWriter out = response.getWriter();
out.println("<h3>Invalid credentials. Try again.</h3>");
RequestDispatcher rd = request.getRequestDispatcher("login.html");
rd.include(request, response);
}
}
}
--------------------------------------------------------
URL Rewriting Servlet (UrlRewriteServlet.java)
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
public class UrlRewriteServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user = request.getParameter("user");
PrintWriter out = response.getWriter();
out.println("<h2>Welcome (via URL Rewriting): " + user + "</h2>");
// Include links to other state management techniques
out.println("<a href='CookieDemoServlet'>Cookie Demo</a><br>");
out.println("<a href='SessionDemoServlet'>Session Demo</a>");
}
}
----------------------------------------------------------
Cookie Demo Servlet (CookieDemoServlet.java)
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
public class CookieDemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
Cookie[] cookies = request.getCookies();
String user = "Guest";
if(cookies != null) {
for(Cookie c : cookies) {
if(c.getName().equals("username")) {
user = c.getValue();
}
}
}
out.println("<h2>Welcome (via Cookie): " + user + "</h2>");
}
}
---------------------------------------------------------
Session Demo Servlet (SessionDemoServlet.java)
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
public class SessionDemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(false);
String user = (session != null) ? (String) session.getAttribute("user") : null;
if(user != null)
out.println("<h2>Welcome (via HttpSession): " + user + "</h2>");
else
out.println("<h2>No session found.</h2>");
}
}
------------------------------------------------------
web.xml Configuration (web.xml)
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="3.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>CookieDemoServlet</servlet-name>
<servlet-class>CookieDemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CookieDemoServlet</servlet-name>
<url-pattern>/CookieDemoServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SessionDemoServlet</servlet-name>
<servlet-class>SessionDemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SessionDemoServlet</servlet-name>
<url-pattern>/SessionDemoServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>URLRewriteServlet</servlet-name>
<servlet-class>UrlRewriteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>URLRewriteServlet</servlet-name>
<url-pattern>/UrlRewriteServlet</url-pattern>
</servlet-mapping>
</web-app>
------------------------------------------------------
Final File Save Order in Project (WEB-INF/classes for .java compiled classes):
Project/
│
├── login.html
│
├── WEB-INF/
│ ├── web.xml
│ ├── classes/
│ │ ├── LoginServlet.class
│ │ ├── UrlRewriteServlet.class
│ │ ├── CookieDemoServlet.class
│ │ ├── SessionDemoServlet.class