0

我有一个登录 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);

}
4

1 回答 1

0

看起来您正在考虑如果该元素不存在,aks[i+1]!=null它将评估为 false 。aks[i+1]但是如果元素不存在,它不会评估任何东西;您将始终遇到您提到的异常(索引超出范围)。似乎你想要做的实际上是while (aks.length>1).

于 2013-08-18T21:11:12.423 回答