2016-07-14 69 views
0

我正在使用表單登錄進行登錄系統(使用JSecurityCheck)。用戶名和密碼存儲在MySQL數據庫中。當我嘗試使用數據庫中的憑據進行登錄時,它將處理錯誤頁面。我想看看它是否訪問數據庫,但我不知道如何。如何檢查JSP是否連接到數據庫?

下面是相關的源代碼(只有重要的東西):

web.xml

<security-constraint> 
    <display-name>Security Constraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>Protected Area</web-resource-name> 
     <url-pattern>/protected/*</url-pattern> 
     <http-method>DELETE</http-method> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
     <http-method>PUT</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name> manager </role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

<!-- Default login configuration uses form-based authentication --> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>Example Form-Based Authentication Area</realm-name> 
    <form-login-config> 
     <form-login-page>/home.jsp</form-login-page> 
     <form-error-page>/error.jsp</form-error-page> 
    </form-login-config> 
</login-config> 
<security-role> 
    <description> An administrator </description> 
    <role-name> manager </role-name> 
</security-role> 

login.jsp

<html> 
 
<head> 
 
<title>Login to Employee Services</title> 
 
<body bgcolor="white"> 
 
    <br /><br /> 
 
    <form method="POST" 
 
     action='<%=response.encodeURL("j_security_check")%>'> 
 
     <table border="1"> 
 
      <thead> 
 
       <tr> 
 
        <th colspan="2">Employee Services</th> 
 
       </tr> 
 
      </thead> 
 
      <tbody> 
 
       <tr> 
 
        <td>Employee Number</td> 
 
        <td><input type="text" name="j_username" required /></td> 
 
       </tr> 
 
       <tr> 
 
        <td>Password</td> 
 
        <td><input type="password" name="j_password" required /></td> 
 
       </tr> 
 
       <tr> 
 
        <td colspan="2" align="center"><input type="submit" 
 
         value="Log In" /> &nbsp;&nbsp; <input type="reset" value="Reset" /> 
 
        </td> 
 
       </tr> 
 
      </tbody> 
 
     </table> 
 
    </form> 
 
</body> 
 
</html>

server.xml(下的Apache Tomcat目錄):

<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" 
     driverName="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/UserDB?user=root;password=root" 
     userTable="users" userNameCol="employeeNum" userCredCol="password" 
     userRoleTable="user_roles" roleNameCol="role" /> 

============================== EDIT ==== =============================

我玩了一下,意識到我可以從控制檯檢查。

我不太熟悉領域,所以如果有人看到它爲什麼不連接,請留下評論/回答。

錯誤:

SEVERE: Exception performing authentication 
java.sql.SQLException: com.mysql.jdbc.Driver 
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:692) 
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:350) 
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:294) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:449) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Unknown Source) 

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Unknown Source) 
at org.apache.catalina.realm.JDBCRealm.open(JDBCRealm.java:688) 
... 15 more 

回答

0

您沒有出現在Tomcat或應用程序中的MySQL驅動程序類。 您可以從here下載驅動程序並將其放置在「$ CATALINA_HOME/lib」文件夾中。

+0

感謝您的幫助。我下載了驅動程序,但由於我使用的是Windows,因此我將它放在Project/Web-Inf/lib下。然而,錯誤仍然幾乎相同。 – NotAMonkey24

+0

@ NotAMonkey24服務器本身需要訪問驅動程序。把它放在Tomcat的lib文件夾中。 – Gimby

+0

@Gimby謝謝你解決了這個問題。 – NotAMonkey24

相關問題