Servlet实现根据用户的注册信息,验证用户的登录信息是否正确
用户信息已写入文件中,如图
public static boolean loginCheck(File userFile, String pwd) throws IOException{
if (userFile.exists()) {
Properties properties = new Properties();
FileInputStream fis = new FileInputStream(userFile);
properties.load(fis);
if (properties.getProperty("pwd").equals(pwd)) {
return true;
}else{
return false;
}
}else{
return false;
}
}
所以应该怎么调用已有的文件作为参数?
我这样写为什么方法中的第一个if判断文件不存在?是因为创建了一个新的空文件吗?
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
User user = new User();
String filePath= getServletContext().getRealPath("/users");
File userFile= new File(filePath+"/"+user.getUserName()+".properties");
user.setUserName(req.getParameter("userName");
if(UserModel.loginCheck(userFile,req.getParameter("pwd"))){
resp.getWriter().print("登录成功");
}
else{
resp.getWriter().print("登录失败");
}
}
应该怎么改呢?
该回答引用于gpt与OKX安生共同编写:
您的代码中,创建 userFile 的语句所在的位置不正确。如果您是在获取 user.getUserName() 值之前创建 userFile,那么 user.getUserName() 将返回 null,从而导致 userFile 被创建为新的空文件。
另外,在调用 loginCheck() 方法时,需要传递正确的参数。根据您提供的方法签名,loginCheck() 方法需要传递一个 File 类型的参数和一个 String 类型的参数。因此,在您的代码中,应该使用正确的参数来调用该方法。
下面是修改后的代码,用于实现用户登录功能:
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
User user = new User();
user.setUserName(req.getParameter("userName"));
String filePath = getServletContext().getRealPath("/users");
File userFile = new File(filePath + "/" + user.getUserName() + ".properties");
if (UserModel.loginCheck(userFile, req.getParameter("pwd"))) {
resp.getWriter().print("登录成功");
} else {
resp.getWriter().print("登录失败");
}
}
在这个代码中,我们首先实例化了一个 User 对象,并设置了其属性 userName 的值。然后,我们使用 getServletContext().getRealPath() 方法获取 users 目录的真实路径,并拼接出用户文件的完整路径。最后,我们通过调用 loginCheck() 方法来验证用户的登录信息是否正确。
希望这能够帮助您解决问题!
因为你没有获取请求中的用户登录信息,只是定义了一个user对象而已,导致user.getName()是一个空值null
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String userName=req.getParameter("userName");
System.out.println("当前登录账号:"+userName);
String filePath = getServletContext().getRealPath("/users");
File userFile = new File(filePath + "/" + userName + ".properties");
if (UserModel.loginCheck(userFile, req.getParameter("pwd"))) {
resp.getWriter().print("登录成功");
} else {
resp.getWriter().print("登录失败");
}
}