帮忙看下这段servlet是什么意思啊?

ashui811 2009-03-23 03:25:11
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 java.sql.Statement;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetDBInfoServlet extends HttpServlet {
private String url;
private String user;
private String password;

public void init()throws ServletException{
ServletContext sc=getServletContext();
String driverClass=sc.getInitParameter("driverClass");
url=sc.getInitParameter("url");
user=sc.getInitParameter("user");
password=sc.getInitParameter("password");

try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
throw new ServletException("数据库加载失败!");
}
}

public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try {
conn=DriverManager.getConnection(url,user,password);
resp.setContentType("text/html;charset=gb2312");
PrintWriter out=resp.getWriter();
out.println("<html><head>");
out.println("<title>数据库表的信息</title>");
out.println("</head><body>");
String tableName=req.getParameter("tableName");//这句第一次运行应该是返回null,应该执行if里的语句 stmt=conn.createStatement();
stmt.executeUpdate("use bookstore");
if(tableName==null||tableName.equals("")){
DatabaseMetaData dbMeta=conn.getMetaData();
rs=dbMeta.getTables(null, null, null, new String[]{"TABLE"});
out.println("<form action=\"getdbinfo\" method=\"get\">");
out.println("<select size=1 name=tableName");//size=1是什么意思?
while(rs.next()){
out.println("<option value="+rs.getString("TABLE_NAME"));
out.println(rs.getString("TABLE_NAME"));//这句是什么意思?不明白
out.println("</option>");
}
out.println("</select><p>");
out.println("<input type=\"submit\" value=\"提交\">");
out.println("</form>");

out.println("</body></html>");
out.close();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
rs=null;

}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
stmt=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
conn=null;
}
}

}
}

按道理程序应该从数据库中读出所有表格填入select中,但是我提交后什么反应都没有,而且下拉框是空的,
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Study_Work_2009 2009-03-25
  • 打赏
  • 举报
回复
<select size=1 name=tableName");//size=1是下拉框的大小
out.println(rs.getString("TABLE_NAME"));//TABLE_NAME是表中的列名
x1987xiaoxiao 2009-03-24
  • 打赏
  • 举报
回复

out.println(rs.getString("TABLE_NAME"));
得到列名为TABLE_NAME的值


yuanjun_xf 2009-03-24
  • 打赏
  • 举报
回复
楼上正解!非常详细
rayson0405 2009-03-23
  • 打赏
  • 举报
回复


conn=DriverManager.getConnection(url,user,password);
resp.setContentType("text/html;charset=gb2312");
PrintWriter out=resp.getWriter();
out.println(" <html> <head>");
out.println(" <title>数据库表的信息 </title>");
out.println(" </head> <body>");
String tableName=req.getParameter("tableName");//
stmt.executeUpdate("use bookstore"); //我想. 用的应该是MySql数据库吧.. 这里是表示使用名字为bookstore的数据库
if(tableName==null||tableName.equals("")){
DatabaseMetaData dbMeta=conn.getMetaData(); // 这是得到了数据源对象..MetaData包含了这个表的基本信息,比如说,表名,列的名字,列的个数..
rs=dbMeta.getTables(null, null, null, new String[]{"TABLE"});
out.println(" <form action=\"getdbinfo\" method=\"get\">");
out.println(" <select size=1 name=tableName");// size=1 是说明.. Select 就只有1行.. 这样也说不明白.. 把这个size设成大写的数字,比如5,就明白是什么意思了..
while(rs.next()){
out.println(" <option value="+rs.getString("TABLE_NAME"));
out.println(rs.getString("TABLE_NAME"));//结果集里面有个列,列名是TABLE_NAME,通过这个可以得到改列的值
out.println(" </option>");

zhj92lxs 2009-03-23
  • 打赏
  • 举报
回复
size就是大小了
zhj92lxs 2009-03-23
  • 打赏
  • 举报
回复
就是输出一个下拉框
yudehai87 2009-03-23
  • 打赏
  • 举报
回复
size应该是下拉列表的大小,那句后面好象少了一个>,还有这句rs.getString("TABLE_NAME")是得到下拉菜单里的表名.

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧