index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<br> <p>随机查询记录
<FORM action="random.jsp" Method="post" >
输入数据库名: <Input type=text name="databaseName" size=8>
<br>输入表的名字: <Input type=text name="tableName" size=15>
<br>输入用户名:<Input type=text name="user" size=6>(默认是root)
<br>输入密码: <Input type="password" name="password" size=3>(默认是空)
<br>输入查询的记录数:<Input type=text name="count" value=3>
<br><Input type=submit name="g" value="提交">
</Form>
</body>
</html>
random.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="inquire"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'random.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<% String dName=request.getParameter("databaseName");
String tName=request.getParameter("tableName");
String id=request.getParameter("user");
String secret=request.getParameter("password");
String n=request.getParameter("count");
%>
<inquire:RandomQuery databaseName="<%=dName%>"
tableName="<%=tName%>"
user="<%=id%>"
password="<%=secret%>"
count="<%=n%>"/>
<br>
在<%=biao%>表随机查询到<%=randomCount%>条记录:
<br>
<%--biao和randomCount是Tag文件返回的对象--%>
<BR> <%=queryResult %>
</body>
</html>
RandomQuery.tag
<%@ tag pageEncoding="GB2312" %>
<%@ tag import="java.sql.*" %>
<%@ tag import="java.util.*" %>
<%@ attribute name="databaseName" required="true" %>
<%@ attribute name="tableName" required="true" %>
<%@ attribute name="user" required="true" %>
<%@ attribute name="password" required="true" %>
<%@ attribute name="count" required="true" %>
<%@ variable name-given="biao" scope="AT_END" %>
<%@ variable name-given="queryResult" scope="AT_END" %>
<%@ variable name-given="randomCount" scope="AT_END" %>
<%
Vector vector=new Vector();
StringBuffer result;
result=new StringBuffer();
try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
Connection con;
Statement sql;
ResultSet rs;
int n=0;
try{ result.append("<table border=1>");
String uri= "jdbc:mysql://127.0.0.1/"+databaseName;
con=DriverManager.getConnection(uri,user,password);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int 字段个数=0;
result.append("<tr>");
while(rs1.next()){
字段个数++;
String clumnName=rs1.getString(4);
result.append("<td>"+clumnName+"</td>");
}
result.append("</tr>");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery("SELECT * FROM "+tableName);
rs.last();
int rowNumber=rs.getRow();
int number=rowNumber; //获取记录数
for(int i=1;i<=number;i++)
vector.add(new Integer(i));
int m=Math.min(Integer.parseInt(count),number);
n=m;
while(m>0){
int i=(int)(Math.random()*vector.size());
//从vector中随机抽取一个元素:
int index=((Integer)vector.elementAt(i)).intValue();
rs.absolute(index); //游标移到这一行
result.append("<tr>");
for(int k=1;k<=字段个数;k++)
result.append("<td>"+rs.getString(k)+"</td>");
result.append("</tr>");
m--;
vector.removeElementAt(i); //将抽取过的元素从vector中删除
}
result.append("</table>");
con.close();
}
catch(SQLException e){
result.append("请输入正确的用户名和密码");
}
jspContext.setAttribute("queryResult",new String(result));//返回queryResult对象
jspContext.setAttribute("biao",tableName);//返回biao对象
jspContext.setAttribute("randomCount",String.valueOf(n));//返回randomCount对象
%>
项目目录结构图示:
运行效果显示: