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" /> <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
感謝您的幫助。我下載了驅動程序,但由於我使用的是Windows,因此我將它放在Project/Web-Inf/lib下。然而,錯誤仍然幾乎相同。 – NotAMonkey24
@ NotAMonkey24服務器本身需要訪問驅動程序。把它放在Tomcat的lib文件夾中。 – Gimby
@Gimby謝謝你解決了這個問題。 – NotAMonkey24