我使用JSP表单创建了一个简单的登录应用程序,并通过Servlet显示HomePage.我还在servlet中创建了一个HashMap,它存储了几个用户名和密码。当用户输入用户名和密码时,会将其与地图中存在的用户名和密码进行比较,并显示相应的消息。但这里的问题是 HashMap 是在用户点击登录按钮后初始化的,即当 servlet 程序启动时。我想事先初始化地图,当用户登录时应该与地图进行比较,而不是在登录后初始化地图。请帮助我如何去做。这是我到目前为止所做的
登录.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<center>
<b>LOGIN PAGE</b><br>
</center>
<form name="login" method="post" action="UserAuthentication">
<center>
USER NAME: <input type="text" name="username">
<br>
<br>
PASSWORD: <input type="password" name="password">
<br>
<br>
<input type="submit" value="LOGIN">
</center>
</form>
</body>
</html>
用户身份验证.java
public class UserAuthentication extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException{
String username = request.getParameter("username");
String password = request.getParameter("password");
PrintWriter out = response.getWriter();
Map<String,String>users = new HashMap<String,String>();
users.put("Sheetal", "sss");
users.put("Raj","rrr");
users.put("Anjali", "aaa");
users.put("Bhavya","bbb");
if(users.containsKey(username) && users.containsValue(password))
{
if(password.equals(users.get(username)))
{
out.println("<html>"+
"<body>"+
"Login Successful" + "<br>" +
"Welcome " + username + "<br>" +
"</body>" +
"</html>");
}
}
else
{
out.println("<html>"+
"<body>"+
"Login Unsuccessful" + "<br>" +
"Try again" + "<br>" +
"</body>" +
"</html>");
}
}
}
蒂亚
使哈希映射在类中成为静态的(我也假设了它的最终):
private static final Map<String,String> users = new HashMap<>();
并将其填充在静态初始值设定项块中:
static {
users.put("Sheetal", "sss");
users.put("Raj", "rrr");
users.put("Anjali", "aaa");
users.put("Bhavya", "bbb");
}
这样,在注册类时,将填充HashMap
。
如果您不知道初始值设定项,请阅读本文。
在您的情况下,最好的方法是创建一个名为 users 的单例类,如下所示。
public class Users{
private static Map<String,String> users = new HashMap<>();
private users(){
users.put("Sheetal", "sss");
users.put("Raj", "rrr");
users.put("Anjali", "aaa");
users.put("Bhavya", "bbb");
}
public static Users singleInstance = new Users();
public boolean validate(String userName,String password)
{
boolean result = false;
if(condition)
result = true;
return result;
}
在您的用户身份验证中.java当您要进行验证时,
if(Users.singleInstance.validate(userName,password))