猿教程 Logo

Servlet使用HttpSession实现登录和登出的案例

我们可以使用setAttribute绑定对象到HttpSession实例上,并使用getAttribute方法获取对象。

在上一页中,我们已经了解了什么是HttpSession,如何存储和从会话对象获取数据等。

在这里,我们将创建一个真实的登录和注销应用程序,但是不使用数据库代码。 我们假设密码是admin123。

在这个例子中,我们创建3个链接:登录,注销和配置文件。 用户在登录之前无法转到个人资料页面。如果用户登出,他需要重新登录以访问个人资料。

在这个应用程序中,我们创建了以下文件。

  1. index.html

  2. link.html

  3. login.html

  4. LoginServlet.java

  5. LogoutServlet.java

  6. ProfileServlet.java

  7. web.xml

 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>

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();
	}
}

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();
	}
}

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();
	}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>  
<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>

输出







如果再次单击配置文件链接,您需要先登录。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/servlet-http-session-login-and-logout-example.html