设计一段代码,点击前端的超链接后,可以查看到数据库已经存在的表信息,比如一张课程表。(要求:使用servlet,不用JavaScript)
时间: 2024-03-27 19:41:01 浏览: 122
好的,这里是一个简单的实现方式:
首先,在前端页面中添加一个超链接,指向我们要创建的 servlet:
```html
<a href="ShowTableServlet">查看课程表</a>
```
接下来,我们创建一个名为 `ShowTableServlet` 的 servlet,用于处理用户点击超链接后的请求。在这个 servlet 中,我们需要连接数据库,并查询课程表的信息,最后将查询结果返回给用户。
下面是一个简单的 `ShowTableServlet` 的代码示例:
```java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ShowTableServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// JDBC 驱动器名称和数据库 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
// 数据库凭据
static final String USER = "root";
static final String PASS = "root";
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
String title = "课程表信息";
out.println("<html>");
out.println("<head><title>" + title + "</title></head>");
out.println("<body>");
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动器
Class.forName(JDBC_DRIVER);
// 打开一个连接
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行 SQL 查询
stmt = conn.createStatement();
String sql = "SELECT * FROM course";
ResultSet rs = stmt.executeQuery(sql);
// 显示查询结果
out.println("<table>");
out.println("<tr><td>课程编号</td><td>课程名称</td><td>学分</td></tr>");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int credit = rs.getInt("credit");
out.println("<tr><td>" + id + "</td><td>" + name + "</td><td>" + credit + "</td></tr>");
}
out.println("</table>");
// 完成后关闭
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se2) {
} // 什么都不做
try {
if (conn != null) {
conn.close();
}
} catch (SQLException se) {
se.printStackTrace();
}
}
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
```
在这个 servlet 中,我们首先设置了响应内容类型为 `text/html;charset=UTF-8`,然后连接了 MySQL 数据库,并查询了 `course` 表的所有信息。最后,我们将查询结果以 HTML 表格的形式展示给用户。
需要注意的是,为了避免 SQL 注入攻击,应该使用 PreparedStatement 来执行 SQL 查询和更新操作。这里为了简单起见,直接使用 Statement 进行了查询操作。
阅读全文