package ww;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author King 2008-9-27 21:15
*/
public class FenYe extends TagSupport {
// 标签属性
private String driver;
private String url;
private String user;
private String pass;
private String sql;
private String[] names; // 要显示的表头
private int pageSize; // 一页显示的记录数
int RowCount; // 记录总数
int PageCount; // 总页数
int Page; // 待显示页码
// 执行数据库访问的对象
private Connection conn = null;
private Statement st = null;
private ResultSet rs = null;
private ResultSetMetaData rmd = null;
// 标签属性对应的get()和set()方法
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String[] getNames() {
return names;
}
public void setNames(String[] names) {
this.names = names;
}
@Override
public int doEndTag() throws JspException {
// 获取页面输出流
JspWriter out = pageContext.getOut();
HttpServletRequest request = (HttpServletRequest) pageContext
.getRequest();
String pageJsp = request.getRequestURI().substring(
(request.getContextPath().length() + 1));
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, pass);
st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
rs.last(); // 将指针移动到此 ResultSet 对象的最后一行
RowCount = rs.getRow(); // 返回查询结果有几条记录
PageCount = (RowCount + pageSize - 1) / pageSize; // 记算总页数
String strPage = pageContext.getRequest().getParameter("newpage"); // 取得待显示页码
if (strPage == null) {
// 此时显示第一页数据
Page = 1;
} else {
Page = java.lang.Integer.parseInt(strPage);
if (Page < 1)
Page = 1;
}
if (Page > PageCount) // 调整待显示的页码
Page = PageCount;
out.print("<form><table border='1' bgcolor='9999cc' ");
// 显示表头
if (names==null ) { // 不传表头(既names)过来时
/**
* 英文表头
* 英文系统可以用,呵呵
*/
rmd = rs.getMetaData(); //获取列的数目
int j = rmd.getColumnCount();
out.print("<tr>");
for (int m = 1; m <= j; m++) {
out.print(" <th><div align='center'>"
+ rmd.getColumnName(m) + "</div></th>");
}
out.print("</tr>");
// 在页面输出表格内容
int i = 0;
if (PageCount > 0) {
rs.absolute((Page - 1) * pageSize + 1); // 将记录指针定位到待显示页的第一条记录上 将指针移动到此 ResultSet 对象的给定行编号
while (i < pageSize && !rs.isAfterLast()) {
// AfterLast将指针移动到此 ResultSet 对象的末尾,正好位于最后一行之后
out.print("<tr>");
for (int m = 1; m <= j; m++) {
out.print(" <td><div align='center'>" + rs.getString(m)
+ "</div></td>");
}
out.print("</tr>");
rs.next();
i++;
}
}
out.print("<td colspan=" + j + ">"); //最后一行跨j列
} else { //传表头(既names)过来时
out.print("<tr>");
for (int m = 0; m < names.length; m++) {
out.print(" <th><div align='center'>" + names[m]
+ "</div></th>");
}
// 在页面输出表格内容
int i = 0;
if (PageCount > 0) {
rs.absolute((Page - 1) * pageSize + 1); // 将记录指针定位到待显示页的第一条记录上 将指针移动到此 ResultSet 对象的给定行编号
while (i < pageSize && !rs.isAfterLast()) {
// AfterLast将指针移动到此 ResultSet 对象的末尾,正好位于最后一行之后
out.print("<tr>");
for (int m = 1; m <= names.length; m++) {
out.print(" <td><div align='center'>" + rs.getString(m)
+ "</div></td>");
}
out.print("</tr>");
rs.next();
i++;
}
}
out.print("<td colspan=" + names.length + ">"); //最后一行跨names.length列
}
out.print("<div align='center'>第" + Page + "页 共" + PageCount + "页 "
+ RowCount + "条记录");
if (Page > 1) {
out.print("<a href=" + pageJsp + "?newpage=" + (Page - 1)
+ "><- </a> ");
}
if (Page < PageCount) {
out.print("<a href=" + pageJsp + "?newpage=" + (Page + 1)
+ ">-></a> ");
}
out.print("转到第:<select name='newpage'>");
for (int k = 1; k <= PageCount; k++) {
out.print("<option value=" + k + ">" + k + "</option>");
}
out.print("</select>页");
out.print("<input type='submit' value='GO'></div></td></tr></table></form>");
} catch (Exception e) {
e.printStackTrace();
}
return super.doEndTag();
}
@Override
public void release() {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
if (st != null)
try {
st.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JSP分面标签--JAVA分面标签
共19个文件
class:6个
jar:3个
properties:2个
需积分: 0 4 下载量 189 浏览量
2008-10-03
21:47:29
上传
评论
收藏 369KB RAR 举报
温馨提示
自己做的分面标签 用起来还可以.. 通用性较好
资源详情
资源评论
资源推荐
收起资源包目录
qq.rar (19个子文件)
qq
.project 1KB
.settings
.mymetadata 279B
WebRoot
WEB-INF
web.xml 914B
page.tld 1KB
lib
msbase.jar 280KB
mssqlserver.jar 65KB
msutil.jar 58KB
classes
log4j.properties 286B
ww
FenYe.class 6KB
DBBean.class 3KB
Jdbc_tag.class 3KB
Body_tag.class 2KB
Hello.class 819B
Write_tag.class 1KB
META-INF
MANIFEST.MF 39B
MyJsp.jsp 603B
.myeclipse
src
log4j.properties 286B
ww
FenYe.java 6KB
.classpath 574B
共 19 条
- 1
java__king
- 粉丝: 24
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0