Servlets 从servlet中的文本文件读取

Servlets 从servlet中的文本文件读取,servlets,text-files,Servlets,Text Files,我有一个登录servlet,从中获取用户名和密码。我有一个credentials.txt文件,我在其中保存了几个用户名,紧跟着它们的密码在一行中。在我的logincheck servlet中读取用户名和密码后,我想在credentials.txt中搜索它。如果找到匹配项,我们将被定向到welcomepage servlet,如果没有找到,我们将再次被定向到登录servlet。我的代码中出现数组越界异常 请帮助更正我的代码 protected void processRequest(HttpSer

我有一个登录servlet,从中获取用户名和密码。我有一个credentials.txt文件,我在其中保存了几个用户名,紧跟着它们的密码在一行中。在我的logincheck servlet中读取用户名和密码后,我想在credentials.txt中搜索它。如果找到匹配项,我们将被定向到welcomepage servlet,如果没有找到,我们将再次被定向到登录servlet。我的代码中出现数组越界异常

请帮助更正我的代码

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String user=request.getParameter("username");
    String pass=request.getParameter("password");
    File obj=new File("credentials.txt");
    FileReader reader=new FileReader(obj);
    BufferedReader in=new BufferedReader(reader);      
    String aks[],temp1,temp2;
    int i=0;
    String line=in.readLine();
    while(line!=null){
        aks=line.split("\t");
        while(aks[i+1]!=null){
        temp1=aks[i];
        temp2=aks[i+1];
        if(temp1.equals(user) && temp2.equals(pass)){
            RequestDispatcher obj1=request.getRequestDispatcher("welcomepage");
            obj1.forward(request,response);
        }
        line=in.readLine();
    }
    }
    String errormsg="username and password do not match. Please re-enter";
    request.setAttribute("errormsg",errormsg);
    RequestDispatcher obj1=request.getRequestDispatcher("login");
    obj1.forward(request,response);

}

看起来你在想,
aks[i+1]=如果元素aks[i+1]
不存在,null将计算为false。但是如果元素不存在,它将不会计算任何值;您将始终看到您提到的异常(索引超出范围)。看起来你要做的可能实际上是
while(aks.length>1)

数组索引越界异常更确切地说。你为什么要重新发明轮子?所有Servlet容器都支持表单身份验证,并且大多数(全部?)都支持简单的基于文件的用户和密码列表。如果此代码不太有用或比它应该的更复杂……那么我应该如何验证保存在简单文本文件中的用户名和密码?应用您的解决方案是否有效。我没有收到任何与数组相关的错误。但是现在我的应用程序不起作用了。在提交用户名和密码后,只要单击登录链接,页面就会继续处理,但不会转到下一页。但它没有显示任何错误。