📜  Servlet HttpSession登录和注销示例

📅  最后修改于: 2021-01-09 12:45:58             🧑  作者: Mango

Servlet HttpSession登录和注销示例

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

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

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

访问此处仅使用cookie的登录和注销应用程序使用cookie的servlet登录和注销示例

在此示例中,我们将创建3个链接:登录,注销和配置文件。用户必须先登录才能进入配置文件页面。如果用户已注销,则需要再次登录才能访问配置文件。

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

  • index.html
  • link.html
  • login.html
  • LoginServlet.java
  • LogoutServlet.java
  • ProfileServlet.java
  • web.xml




Servlet Login Example



Login App using HttpSession

Login| Logout| Profile
Name:
Password:

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

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


  
  
    
    LoginServlet
    LoginServlet
    LoginServlet
  
  
    LoginServlet
    /LoginServlet
  
  
    
    ProfileServlet
    ProfileServlet
    ProfileServlet
  
  
    ProfileServlet
    /ProfileServlet
  
  
    
    LogoutServlet
    LogoutServlet
    LogoutServlet
  
  
    LogoutServlet
    /LogoutServlet
  

输出量






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