2013-03-06 30 views
-3

我試圖在MySQL數據庫中使用userID=JJPassword=password來驗證此JSP頁面中的用戶。我不知道我在哪裏弄錯了,因爲它一直說沒有用戶或密碼匹配,即使我把正確的用戶名和密碼。JSP和MySQL中的用戶身份驗證失敗

<%@ page language="java" import="java.sql.*" errorPage="" %><% Connection conn = null; 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ebookshop","root", "password"); 

ResultSet rsdoLogin = null; 
PreparedStatement psdoLogin=null; 

String sUserID=request.getParameter("sUserID"); 
String sPassword=request.getParameter("sPwd"); 
String message="User login successfully "; 

try{ 
String sqlOption="SELECT * FROM usermaster where" 
       +" sUserID=? and sPassword=password(?)"; //and sStatus='A' 

psdoLogin=conn.prepareStatement(sqlOption); 
psdoLogin.setString(1,sUserID); 
psdoLogin.setString(2,sPassword); 

rsdoLogin=psdoLogin.executeQuery(); 

if(rsdoLogin.next()) 
{ 
    //String sUserName=rsdoLogin.getString("sFirstName")+" "+rsdoLogin.getString("sLastName"); 
String sUserName=rsdoLogin.getString("sUserID")+" "+rsdoLogin.getString("sPwd"); 
    session.setAttribute("sUserID",rsdoLogin.getString("sUserID")); 
    /* session.setAttribute("iUserType",rsdoLogin.getString("iUserType")); 
    session.setAttribute("iUserLevel",rsdoLogin.getString("iUserLevel")); */ 
    session.setAttribute("sPassword",sPassword); 

    response.sendRedirect("success.jsp?error="+message); 
} 
else 
{ 
    message="No user or password matched" ; 
    response.sendRedirect("login.jsp?error="+message); 
} 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 


/// close object and connection 
try{ 
    if(psdoLogin!=null){ 
     psdoLogin.close(); 
    } 
    if(rsdoLogin!=null){ 
     rsdoLogin.close(); 
    } 

    if(conn!=null){ 
     conn.close(); 
    } 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
%> 
+0

順便說一下,因爲我也有一個register.jsp因此我想驗證用戶的用戶ID和密碼對數據庫,而不是隻有一個固定的用戶名和密碼。很多謝謝! – Kimberly 2013-03-06 17:36:41

+0

你可以從你的JSP中刪除所有的Java代碼,並把它放在一個Servlet中嗎?我知道JSP支持嵌入式Java代碼,但他們確實不應該,IMO – NickJ 2013-03-11 13:37:29

回答

1

你的代碼是正確的我suppose..U首先檢查通過調用分開我的意思是不要在JSP使用servlet和類MVC architecture.As它是不是一個好practice.I事情,如果你將工作電話遵循MVC拱門。因爲JSP可以防止擁有如此多的邏輯。