使用Cookies的Servlet登录和注销示例图解

Cookie是一种存储在客户端的信息。
在上一页中, 我们了解了很多有关cookie的知识, 例如如何创建cookie, 如何删除cookie, 如何获取cookie等。
在这里, 我们将使用servlet cookie创建一个登录和注销示例。
在此示例中, 我们将创建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> Welcome to Login App by Cookie< /h1> < a href="http://www.srcmini.com/login.html"> Login< /a> | < a href="http://www.srcmini.com/LogoutServlet"> Logout< /a> | < a href="http://www.srcmini.com/ProfileServlet"> Profile< /a> < /body> < /html>

档案:link.html
< a href="http://www.srcmini.com/login.html"> Login< /a> | < a href="http://www.srcmini.com/LogoutServlet"> Logout< /a> | < a href="http://www.srcmini.com/ProfileServlet"> Profile< /a> < hr>

档案: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="http://www.srcmini.com/login"> < /form>

文件:LoginServlet.java
package com.srcmini; 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 { 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("You are successfully logged in!"); out.print("< br> Welcome, "+name); Cookie ck=new Cookie("name", name); response.addCookie(ck); }else{ out.print("sorry, username or password error!"); request.getRequestDispatcher("login.html").include(request, response); }out.close(); }}

文件:LogoutServlet.java
package com.srcmini; 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 { 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); Cookie ck=new Cookie("name", ""); ck.setMaxAge(0); response.addCookie(ck); out.print("you are successfully logged out!"); } }

文件:ProfileServlet.java
package com.srcmini; 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 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); Cookie ck[]=request.getCookies(); if(ck!=null){ String name=ck[0].getValue(); if(!name.equals("")||name!=null){ out.print("< b> Welcome to Profile< /b> "); out.print("< br> Welcome, "+name); } }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> com.srcmini.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> com.srcmini.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> com.srcmini.LogoutServlet< /servlet-class> < /servlet> < servlet-mapping> < servlet-name> LogoutServlet< /servlet-name> < url-pattern> /LogoutServlet< /url-pattern> < /servlet-mapping> < /web-app>

【使用Cookies的Servlet登录和注销示例图解】下载此示例(使用Eclipse IDE开发)
输出
使用Cookies的Servlet登录和注销示例图解

文章图片
使用Cookies的Servlet登录和注销示例图解

文章图片
使用Cookies的Servlet登录和注销示例图解

文章图片
使用Cookies的Servlet登录和注销示例图解

文章图片
使用Cookies的Servlet登录和注销示例图解

文章图片
使用Cookies的Servlet登录和注销示例图解

文章图片
如果再次单击配置文件链接, 则需要先登录。

    推荐阅读