Java 如何使用servlet、JSP或两者正确显示Mysql表
我尝试显示MySQL表已经有一段时间了,我确实成功了,但是我很难弄清楚如何使用从文本框中获取的查询来显示表 基本上这是我的设置,我有一个servlet,servlet有一个html按钮,它应该根据在提到的文本框中编写的查询来更新显示的表 表格将使用此代码显示Java 如何使用servlet、JSP或两者正确显示Mysql表,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我尝试显示MySQL表已经有一段时间了,我确实成功了,但是我很难弄清楚如何使用从文本框中获取的查询来显示表 基本上这是我的设置,我有一个servlet,servlet有一个html按钮,它应该根据在提到的文本框中编写的查询来更新显示的表 表格将使用此代码显示 protected void showDB(PrintWriter out, ResultSet rs) throws SQLException { ResultSetMetaData rsMD = rs.getMetaData
protected void showDB(PrintWriter out, ResultSet rs) throws SQLException {
ResultSetMetaData rsMD = rs.getMetaData();
int counter = 1;
while (rs.next()) {
//Prints column names
if (counter <= 1) {
out.println("<table border=5>");
out.println("<thead>");
for (; counter <= rsMD.getColumnCount(); counter++) {
out.println("<th>" + rsMD.getColumnName(counter) + "</th>");
}
out.println("</thead>");
}
counter = 1;
out.println("<tr>");
// Prints row data
for (; counter <= rsMD.getColumnCount(); counter++) {
out.println("<td>" + rs.getString(counter) + "</td>");
}
out.println("</tr>");
}
out.println("</tbody>");
out.println("</table>");
}
我不知道应该使用jsp还是servlet(或如标题所示,两者兼而有之)来完成,因此我将考虑任何类型的响应。我不知道您想做什么,所以我无法告诉您使用哪一种。原则上,servlet与JSP(JSF)一起用于实现MVC体系结构 要解决您描述为问题的问题,您需要做的是,您需要一个类似于:
<form action=" /*the url where you get data */ " method="get">
<input name="tabledata" type="button" value="getData">
</form>
- 使用具有表单的Jsp在数据库中存储数据
- 使用Jsp显示MySql表数据
- 使用sevlet作为控制器,可用于控制流量
- 将DAO的类与从数据库访问数据的方法一起使用
- 在sevlet中调用DAO方法,在对象中设置从DAO方法返回的值
- 通过在请求对象中将该对象设置为jsp来传递该对象 MVC架构
- 模型-POJO's,DAO
- 视图-JSP
- 控制器-Servlet
- JSP实际上是一个用不同符号写下的Servlet。JSP代码被编译成Servlet代码,在使用之前,它被编译成一个普通的Servlet(有谁想到过这个,当时可能认为这是个好主意)
在本例中,我认为您不需要额外的JSP,因为您已经有了一个Servlet。要执行所需操作,您可以创建一个HTML文件(yourForm.HTML),其中包含一个表单,以允许输入查询并提交查询,类似于:
<form action="yourServlet" method="post">
<input type="text" name="sql-query/>
<input type="submit"/>
</form>
<servlet>
<servlet-name>yourDbServlet</servlet-name>
<servlet-class>your.app.YourDbServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>yourDbServlet</servlet-name>
<url-pattern>/yourServlet</url-pattern>
</servlet-mapping>
请注意,为了简洁起见,我没有捕获任何异常(请注意,异常处理非常重要)。我确实将conn.close()放在finally块中,以确保始终尝试关闭数据库连接,即使代码中出现异常
<form action="yourServlet" method="post">
<input type="text" name="sql-query/>
<input type="submit"/>
</form>
<servlet>
<servlet-name>yourDbServlet</servlet-name>
<servlet-class>your.app.YourDbServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>yourDbServlet</servlet-name>
<url-pattern>/yourServlet</url-pattern>
</servlet-mapping>
String sqlQuery = getParameter("sql-query");
PrintWriter out = response.getWriter();
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/yourdatabase";
conn = DriverManager.getConnection(url, "username", "password");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sqlQuery);
showDB(out, rs);
}
finally {
if (conn != null) {
conn.close();
}
}