Login Logout and Cookies!

Another example of using Cookies for session management in Servlet. Here let us see how to login, maintain user session and then logout.

Our application has the following main pages:
1. Login page
2. Logout page
3. My Profile
4. Index page

The only criteria : You should be not able to logout or view my profile when you have not logged in.

Let us see the code, you can take a look at the project structure from my previous post on Your own Cookie!.

index.html file : Simple html page which displays the login, logout and profile links with Welcome.


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

Welcome!

<a href="login.html">Login</a>
<a href="logoutServlet">Logout</a>
<a href="profileServlet">Profile</a>

</body>
</html>


Next is the index_links.html file : It has html code for displaying the links. For code reusability.


1
2
3
<a href="login.html">Login</a>
<a href="logoutServlet">Logout</a>
<a href="profileServlet">Profile</a>


login.html Displays the login page


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>


<form action="loginServlet" method="post">
Name: <input type="text" name="name">
Password : <input type="text" name="password">
<input type="submit" value="Submit">
</form>

</body>
</html>


LoginServlet.java


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.cookie.login.logout;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet{
 
 @Override
 public void doPost(HttpServletRequest request, HttpServletResponse response){
  try{
   
   response.setContentType("text/html");  
   String name = request.getParameter("name");
   String password = request.getParameter("password");
   
   PrintWriter pw = response.getWriter();
   request.getRequestDispatcher("index_links.html").include(request, response);
   
   pw.write("<br>");
   
   if(name.equals("abc") && password.equals("abc123")){
    pw.write("Welcome " + name);
    Cookie c = new Cookie("name", name);
    response.addCookie(c);
   }else{
    pw.write("Incorrect name/password");
    request.getRequestDispatcher("login.html").include(request, response);
   }
   
   pw.close();
   
  }catch (ServletException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 
}


LogoutServlet.java


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.cookie.login.logout;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LogoutServlet extends HttpServlet {

 @Override
 public void doGet(HttpServletRequest request, HttpServletResponse response) {
  try {
   PrintWriter pw = response.getWriter();
   request.getRequestDispatcher("index_links.html").include(request, response);;
   Cookie[] cs = request.getCookies();

   Cookie c;
   if (cs != null && (c = cs[0]) != null) {
    c.setMaxAge(0);
    response.addCookie(c);
    pw.write("You have successfully logged out");
   } else {
    pw.write("Please login to logout!");
   }
   pw.close();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (ServletException e) {
   e.printStackTrace();
  }
 }

}


ProfileServlet.java


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.cookie.login.logout;

import java.io.PrintWriter;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProfileServlet extends HttpServlet {

 @Override
 public void doGet(HttpServletRequest request, HttpServletResponse response) {

  try {

   PrintWriter pw = response.getWriter();

   request.getRequestDispatcher("index_links.html").include(request,
     response);

   Cookie cs[] = request.getCookies();
   pw.write("<h3>My Profile</h3>");
   Cookie c;
   if(cs != null && (c = cs[0]) != null){

   
   String name = c.getValue();
   if (name != null) {

    pw.write("<br>");
    pw.write("Name : " + name);
    pw.write("<p>");
    pw.write("More data which can be pulled from the DB");
   } 
   }else {
    pw.write("Please login to see your profile");
   }
   pw.close();
   
   StringBuffer sb;
   String s;
   s.to

  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}


web.xml


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<web-app>

<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.cookie.login.logout.LoginServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>


<servlet>
<servlet-name>logoutServlet</servlet-name>
<servlet-class>com.cookie.login.logout.LogoutServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>logoutServlet</servlet-name>
<url-pattern>/logoutServlet</url-pattern>
</servlet-mapping>


<servlet>
<servlet-name>profileServlet</servlet-name>
<servlet-class>com.cookie.login.logout.ProfileServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>profileServlet</servlet-name>
<url-pattern>/profileServlet</url-pattern>
</servlet-mapping>
</web-app>



Place the war file in tomcat's webapp directory.

Run tomcat. Visit http://localhost:8080/Cookies/


Comments

Popular posts from this blog

Writing your own ejabberd Module

npm ECONNREFUSED error

Conditional Flow - Spring Batch Part 6