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