Я новичок в веб-технологиях, и я борюсь с отслеживанием сеансов, в частности с аутентификацией пользователей.
У меня есть html-страница:
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<p>Click
<a href="login.jsp">here</a>
to authenticate.</p>
</body>
</html>
, которая перенаправляетна следующий jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login JSP Page</title>
</head>
<body>
<form action="LoginServlet" method="POST">
<input type="text" name="username">
<input type="password" name="password">
<input type="Submit" value="Conferma">
</form>
</body>
</html>
, где LoginServlet
сервлет получил следующий метод:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */
String paramUser = request.getParameter("username");
String paramPassword = request.getParameter("password");
if(paramUser.equals("demo") && paramPassword.equals("demo")){
// Success
// Invalid session if existing
HttpSession oldSession = request.getSession(false);
if(oldSession != null)
oldSession.invalidate();
HttpSession currentSession = request.getSession(); // Creates new session
currentSession.setAttribute(u, paramUser);
currentSession.setAttribute(p, paramPassword);
response.sendRedirect("success.jsp");
}
else{
// Failed authentication
response.sendRedirect("login.jsp");
}
}
}
Чьи результаты отображаются в следующем представлении:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Success Page</title>
</head>
<body>
<p>Hello</p>
<a href="LogoutServlet">logout</a>
<%= request.getRemoteUser() %> <%--RETURN NULL--%>
</body>
</html>
Но, к сожалению, в представлении jsp request.getRemoteUser()
возвращает null
, и я не знаю почему (и я хочу, чтобы он отображал "demo"
(имя зарегистрированного пользователя).
- Кто-нибудь может объяснить?