AJP Lab Exercise-8


 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