2013-08-18 267 views
0

我有一個登錄servlet,我從哪裏獲取用戶名和密碼。我有一個憑證.txt文件,我保存了幾個用戶名,後面跟着他們的密碼在一行中相鄰。一旦我在我的logincheck servlet中讀取用戶名和密碼,我想在credentials.txt中搜索它。如果找到匹配項,我們將被引導到一個歡迎頁面servlet,如果找不到,我們將再次被引導到登錄servlet。我在我的代碼中獲得了數組越界的異常。從servlets中的文本文件讀取

Plz幫助更正我的代碼。

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); 

} 
+0

數組索引越界異常是精確的。 – Akshay

+0

爲什麼你想重新發明輪子?所有Servlet容器都支持FORM認證,並且大多數(全部)都支持簡單的基於文件的用戶和密碼列表。 –

+0

如果這段代碼有點沒有用或者比它應該更復雜....那麼我該如何驗證保存在簡單文本文件中的用戶名和密碼? – Akshay

回答

0

它看起來像你認爲aks[i+1]!=null將評估爲false,如果元素aks[i+1]不存在。但如果元素不存在,它不會評估任何東西;你總是會提到你的例外(索引超出範圍)。似乎你想要做的事實際上是while (aks.length>1)

+0

應用你的解決方案工作。我沒有得到任何有關陣列的錯誤。但現在我的應用程序沒有工作。只要我提交我的用戶名和密碼後點擊登錄鏈接,頁面就會繼續處理,但永遠不會進入下一頁。它並沒有顯示任何錯誤。 – Akshay