Java « авторизация пользователей при помощи сервлетов

я только начал изучение java, и еще не работал с java ee. Мне нужно сделать авторизацию пользователей при помощи сервлетов. Посоветуйте, пожалуйста, примеры коды или специальную литературу. Спасибо!

1 ответов


Пример кода.

UserInfo.java


public class UserInfo
{
  String   UserName  = "";
  String  ErrorText  = "";
  boolean  LoginFlag = false;
 
  public UserInfo()
  {
    ;
  }
 
  public String GetUser()
  {
    return UserName;
  }
 
  public void Login(String TheUser)
  {
    LoginFlag = true;
    ErrorText = "";
    UserName = TheUser;
  }
 
  public void SetError(String TheText)
  {
    ErrorText = TheText;
  }
 
  public String GetError()
  {
    return ErrorText;
  }
 
  public String IsLogin()
  {
    if (LoginFlag)
      return "true";
    return "false";
  }
 
  public void Logout()
  {
    LoginFlag = false;
    UserName = "";
    ErrorText = "";
  }
}
 

LoginServlet.java

package ru.gizurapps;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LoginServlet
 */

public class LoginServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */

    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String UserName = request.getParameter("username");
    String ResultPage;
   
    HttpSession session = request.getSession();
   
    UserInfo User = (UserInfo) session.getAttribute("userInfo");
   
    if (User == null)
      User = new UserInfo();
   
    if (UserName.equals("gizur"))
    {
      User.Login(UserName);
      ResultPage = "/login_ok.jsp";
      session.setAttribute("userInfo", User);
    }
    else
    {
      ResultPage = "/login.jsp";
      User.SetError("Incorrect user name - " + UserName);
      session.setAttribute("userInfo", User);
    }
   
   
    ServletContext SC = getServletContext();
    RequestDispatcher Disp = SC.getRequestDispatcher(ResultPage);
    Disp.forward(request, response);
  }
 
  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    try
    {
      String IsLogout = request.getParameter("logout");
     
      HttpSession session = request.getSession();
     
      String ResultPage;
      UserInfo User = (UserInfo) session.getAttribute("userInfo");
     
      if (User == null)
        User = new UserInfo();
     
      if (IsLogout != null)
        if (IsLogout.equals("true"))
          User.Logout();
     
      ResultPage = "/login.jsp";
     
      session.setAttribute("userInfo", User);
     
      ServletContext SC = getServletContext();
      RequestDispatcher Disp = SC.getRequestDispatcher(ResultPage);
      Disp.forward(request, response);
    }
    catch (Throwable theException)
    {
      theException.printStackTrace();
    }
  }

}
 

Длинно и путанно конечно. Поэтому попытаюсь объяснить вкратце:
1. Делаешь класс (UserInfo), который будет хранить информацию о текущем пользователе и факт его захода.
2. Делаешь сервлет (LoginServlet), который:
2.1. Берет из информации сессии экземпляр UserInfo
2.2 Проверят вошел ли пользователь уже в систему, и если нет то отображает страницу входа (login.jsp)

Пример, надуманный - я на нем сам учился делать таким образом авторизацию (сейчас конечно же всё намного сложнее)