m0_62667564 2023-03-26 00:53 采纳率: 84.8%
浏览 27
已结题

Servlet根据已有的用户注册文件实现用户登录

Servlet实现根据用户的注册信息,验证用户的登录信息是否正确
用户信息已写入文件中,如图

img


现提供一个方法,获取用户的文件和密码

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("登录失败");
        }
    }

应该怎么改呢?

  • 写回答

3条回答 默认 最新

  • OKX安生 2023-03-26 02:28
    关注
    该回答引用于gpt与OKX安生共同编写:
    
    • 该回答引用于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() 方法来验证用户的登录信息是否正确。

    希望这能够帮助您解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探