2013-06-24 18 views
0

我是java的入門者。 我想開發一個web應用程序來驗證mysql數據庫中的用戶名和密碼。用於檢查數據庫中是否存在用戶名和密碼的java web應用程序

當我運行程序時我收到異常。任何人都可以幫助我找出下面代碼中的錯誤。

index.jsp 
********* 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
     <form method="post" action="database"> 
      <body> 
     <h1>Enter user details</h1> 
     <h2>Name</h2> 
     <input type="text" name="t1" /><br> 
     <h2>Password</h2> 
     <input type="password" name="p1" /><br><br> 

      <input type="submit" value="Submit" name="b1"> 
      </body> 
     </form> 
</html> 


c1.java 
******** 


package model; 

public class c1 { 
    String name,password; 

    public c1(String name, String password) { 
     this.name = name; 
     this.password = password; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 
} 


database.java 
************* 



package controller; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import javax.annotation.Resource; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.sql.DataSource; 


public class database extends HttpServlet { 
    @Resource(name = "db1") 
    private DataSource db1; 


    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 
      String name=request.getParameter("t1").trim(); 
      String password=request.getParameter("p1").trim(); 



      int value=select(name,password); 

       if(value==1) 
       { 

        out.println("User details present in database"); 

       } 
       else 
       { 
        out.println(value); 
        out.println("ERROR Invalid user"); 
       } 



     } 

    catch(Exception e2) 
      { 
       out.println("error"); 
      } 
finally {    
      out.close(); 
     } 
    } 


    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response);` 
    } 


    @Override 
    public String getServletInfo() { 
     return "Short description";`` 
    }// </editor-fold> 
public int select(String UserName,String Password) throws SQLException 
    { 
    DataSource d= db1; 
     Connection c=d.getConnection(); 
     PreparedStatement p=c.prepareStatement 
       ("select * from Employee where name='"+UserName+"' and password='"+Password+"'"); 

    ResultSet rs=p.executeQuery(); 
    int a= rs.getRow(); 
    return a; 

    } 
} 
+0

你得到什麼樣的異常? – dijkstra

+1

異常堆棧跟蹤請?並且下次開始請確保你把它放在帖子中:) – zerocool

+1

這是不合適的,把你的標籤放在

標籤之外。 –

回答

1

你在你的代碼的幾個錯誤:

JSP。身體標記的位置不正確:

正確的代碼:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <form method="post" action="database">> 
    <h1>Enter user details</h1> 
    <h2>Name</h2> 
    <input type="text" name="t1" /> 
    <br> 
    <h2>Password</h2> 
    <input type="password" name="p1" /> 
    <br> 
    <br> 

    <input type="submit" value="Submit" name="b1"> 
    </form> 
</body> 
</html> 

JAVA。你的控制器有幾個錯誤。一些產生錯誤的字符。

正確的代碼:

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, 
IOException { 
    processRequest(request, response); // ERROR Removed last ` 
} 

@Override 
public String getServletInfo() { 
    return "Short description"; // ERROR removed lasts `` 
}// </editor-fold> 

WEB.XML:檢查您的web.xml和驗證是否有下一行:

<servlet> 
    <servlet-name>Database-servlet</servlet-name> 
    <servlet-class>controller.database</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Database-servlet</servlet-name> 
    <url-pattern>/database</url-pattern> 
</servlet-mapping> 
+0

它在catch塊中打印錯誤。我已更正您提到的所有內容。邏輯中是否有任何錯誤? – user2515366

+0

你能告訴我們錯誤嗎?,很難說:)。在out.println(「error」)的基礎上添加下一個代碼'e2.printStackTrace()',並再次運行它。 – maqjav

+0

我的意思是,一旦我們在jsp頁面(登錄表單)中輸入詳細信息,程序就不會執行servlet中的try塊。它直接執行catch塊並在那裏定義打印錯誤。我認爲邏輯中有一些錯誤。 – user2515366

相關問題