
// 从request中获取JSP页面上表单的输入参数 |
String sql = request.getParameter("querySQL"); |
int pageIndex = Integer.parseInt((String)request.getParameter("pageIndex")); |
int pageSize = Integer.parseInt((String)request.getParameter("pageSize")); |
String servleturl = request.getParameter("servleturl"); |
String errorurl = request.getParameter("errorurl"); |
try { |
// 判断SQL语句是否为查询语句,以放置修改数据库 |
sql = sql.trim(); |
if (!sql.toUpperCase().startsWith("SELECT ")){ |
throw new Exception("输入的SQL语句必须是查询语句!"); |
} |
// 执行查询 |
ResultSet rs = sm.executeQuery(sql); |
|
// 为了防止数据库连接被关闭时,ResultSet中的数据无法读取的问题 |
// 在这里将ResultSet转换成CachedRowSet,它存在于内存中,不依赖于数据库。 |
CachedRowSet crs = new CachedRowSetImpl(); |
// populate方法把ResultSet中的数据导入到CachedRowSet中 |
crs.populate(rs); |
|
// 构造能够分页的PageableResultSet对象 |
PageableResultSet pageResultSet = new PageableResultSetImpl(crs); |
// 设置每页的记录数和当前页码 |
pageResultSet.setPageSize(pageSize); |
pageResultSet.gotoPage(pageIndex); |
// 将结果放入session中 |
HttpSession session = request.getSession(); |
session.setAttribute("pageResultSet", pageResultSet); |
|
// 本Servlet处理完毕,将请求转发给下一页面。 |
request.getRequestDispatcher(servleturl).forward(request, response); |
} catch (Exception e){ |
// 查询错误时,清除Session的信息 |
HttpSession session = request.getSession(); |
session.removeAttribute("pageResultSet"); |
// 出现异常时,记录异常信息 |
request.setAttribute("errormsg", e.getMessage()); |
// 将请求转发给错误页面 |
request.getRequestDispatcher(errorurl).forward(request, response); |
} |



