设计一段代码,点击前端的超链接后,可以查看到数据库已经存在的表信息,比如一张课程表。(要求:使用servlet,不用JavaScript)
时间: 2024-03-27 16:41:03 浏览: 99
好的,以下是一个简单的示例代码,可以实现你的需求。
首先,我们需要在 web.xml 文件中配置一个 servlet:
```xml
<servlet>
<servlet-name>TableServlet</servlet-name>
<servlet-class>com.example.TableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TableServlet</servlet-name>
<url-pattern>/table</url-pattern>
</servlet-mapping>
```
这里我们将 servlet 映射到 /table 路径下。
接下来,我们来实现这个 servlet 的逻辑:
```java
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TableServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private final String DB_URL = "jdbc:mysql://localhost:3306/demo";
private final String USER = "root";
private final String PASS = "root";
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
PrintWriter out = response.getWriter();
response.setContentType("text/html");
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
DatabaseMetaData meta = conn.getMetaData();
ResultSet rs = meta.getTables(null, null, null, new String[] { "TABLE" });
out.println("<html>");
out.println("<head><title>Table List</title></head>");
out.println("<body>");
out.println("<h1>Table List</h1>");
out.println("<ul>");
while (rs.next()) {
String tableName = rs.getString("TABLE_NAME");
out.println("<li>" + tableName + "</li>");
}
out.println("</ul>");
out.println("</body>");
out.println("</html>");
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
out.println("ClassNotFoundException: " + e.getMessage());
} catch (SQLException e) {
e.printStackTrace();
out.println("SQLException: " + e.getMessage());
} finally {
out.close();
}
}
}
```
这个 servlet 的逻辑比较简单,就是通过 JDBC 连接数据库,获取数据库中所有的表名,并将表名以无序列表的形式输出到前端页面上。
最后,我们在前端页面上加上一个超链接即可:
```html
<a href="/table">查看课程表</a>
```
当用户点击这个超链接时,就会请求 /table 路径下的 servlet,然后 servlet 会将数据库中所有的表名输出到页面上。
阅读全文