We can hold together the objects on Httpsession Instance and acquire the objects by using setAttributes and getAttributes Ways.
Previously on the page, we came to get the knowledge about what is HttpSession, How to stock and get data from Session Objects etc.
Here, you will learn how to create a realworld login and logout application without using database Code. Here, we are assuming that the password is admin123.
Visit here login and logout application using cookies only servlet login and logout example using cookies.
Here in the below given example, we are going to create 3 links: Login, Logout, and profile.
User cannot go to the profile page till he/she is logged in. Users need to login again to visit their profile if the user is logged out.
The following files are created in this application:
File: Index.html
DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Servlet Login Example</title>
</head>
<body>
<h1>Login App using HttpSession</h1>
<a href="login.html">Login</a>'
<a href="LogoutServlet">Logout</a>'
<a href="ProfileServlet">Profile</a>
</body>
</html>
File: link.html
<a href="login.html">Login</a> ' <a href="LogoutServlet">Logout</a> ' <a href="ProfileServlet">Profile</a> <hr>
File: login.html
<form action="LoginServlet" method="post"> Name:<input type="text" name="name"><br> Password:<input type="password" name="password"><br> <input type="submit" value="login"> </form>
File: LoginServlet.java
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out=response.getWriter(); request.getRequestDispatcher("link.html").include(request, response); String name=request.getParameter("name"); String password=request.getParameter("password"); if(password.equals("admin123")){ out.print("Welcome, "+name); HttpSession session=request.getSession(); session.setAttribute("name",name); } else{ out.print("Sorry, username or password error!"); request.getRequestDispatcher("login.html").include(request, response); } out.close(); } }
File: LogoutServlet.java
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LogoutServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out=response.getWriter(); request.getRequestDispatcher("link.html").include(request, response); HttpSession session=request.getSession(); session.invalidate(); out.print("You are successfully logged out!"); out.close(); } }
File: ProfileServlet.java
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class ProfileServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out=response.getWriter(); request.getRequestDispatcher("link.html").include(request, response); HttpSession session=request.getSession(false); if(session!=null){ String name=(String)session.getAttribute("name"); out.print("Hello, "+name+" Welcome to Profile"); } else{ out.print("Please login first"); request.getRequestDispatcher("login.html").include(request, response); } out.close(); } }
File: web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <description></description> <display-name>LoginServlet</display-name> <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> <description></description> <display-name>ProfileServlet</display-name> <servlet-name>ProfileServlet</servlet-name> <servlet-class>ProfileServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ProfileServlet</servlet-name> <url-pattern>/ProfileServlet</url-pattern> </servlet-mapping> <servlet> <description></description> <display-name>LogoutServlet</display-name> <servlet-name>LogoutServlet</servlet-name> <servlet-class>LogoutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LogoutServlet</servlet-name> <url-pattern>/LogoutServlet</url-pattern> </servlet-mapping> </web-app>
download this example (developed using Eclipse IDE)
Output
You need to login first, If again you click on the profile link.