|
复制代码 package servlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Database {
private static Statement stmt=null;
private static ResultSet rs=null;
private static Connection con;
private static Connection con1;
private static Database dbms;
public Database(){
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "db_cd";
String userName = "dragon";
String password = "123";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void init_dbms(){
if(dbms==null){
dbms=new Database();
}
}
public static Connection getcon(){
return con;
}
public static ResultSet stmt_select(String sql){
init_dbms();
try {
stmt=con.createStatement();
rs=stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public static boolean stmt_uporin(String sql){
init_dbms();
boolean f=false;
try {
stmt=con.createStatement();
stmt.executeUpdate(sql);
f=true;
} catch (SQLException e) {
e.printStackTrace();
f=false;
}
return f;
}
public static Connection con()
{
String url = "jdbc:sqlserver://";
String serverName= "127.0.0.1";
String portNumber = "1433";
String databaseName= "db_cd";
String userName = "dragon";
String password = "123";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con1 = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
} catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con1;
}
}
上面是一个数据库的单类
复制代码 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.STYLE1 {
font-size: 18px;
font-family: "新宋体";
}
.STYLE2 {font-family: "宋体"}
-->
</style>
</head>
<body>
<ul class="STYLE1">
<li><span class="STYLE2"><a href="CDtype?name=6">最新影音</a></span></li>
<li class="STYLE2" ><a href="CDtype?name=1">北美影音</a></li>
<li class="STYLE2"><a href="CDtype?name=2">大陆影音</a></li>
<li class="STYLE2"><a href="CDtype?name=3">日韩影音</a></li>
<li class="STYLE2"><a href="CDtype?name=4">港台影音</a></li>
<li><span class="STYLE2"><a href="CDtype?name=5">怀旧影音</a></span></li>
</ul>
</body>
</html>
上面这个是简单树导航的页面
复制代码 package bean;
public class CDtypebean {
int page;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
}
上面这个是JAVABEAN 文件,很简单不详细说了
复制代码 package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.CDtypebean;
public class CDtype extends HttpServlet {
/**
* Constructor of the object.
*/
public CDtype() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
if (request.getParameter("name") != null) {//接收left.jsp传递过来的请求参数
int page = Integer.parseInt(request.getParameter("name"));//把值转化成INT型
CDtypebean cdtypebean = new CDtypebean();//创建并初始化 JABABEAN对象
cdtypebean.setPage(page);//把PAGE值存入到JAVABEAN里
HttpSession session = request.getSession();//创建SESSION对象,并调用方法把
session.setAttribute("name", cdtypebean);//把CDtypebean对象存到session里
response.sendRedirect("FenPage.jsp");//跳转页面
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
这个是SERVELET文件
复制代码 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="bean.FenPage"%>
<%@ page import="bean.CDtypebean"%>
<%@ page import="java.sql.*"%>
<%
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 'FenPage.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>
<%
int curpage = 1; //当前页
int allpage = 0; //总页数
int allrecord = 0; //总记录数
int page_record = 5; //分页单位
int pages = 0; //用户请求的页面
int lick = 0;
CDtypebean typebean = (CDtypebean) session.getAttribute("name");//取出session值,用CDtypebean对象接收
lick = typebean.getPage();//取出值附给变量lick
String countSQL = "select count(*) from a where typeID="
+ lick;//SQL语句,主要是用来查询表里数据的条数
if (request.getParameter("page") != null) {
pages = Integer.parseInt(request.getParameter("page"));
}
FenPage fenpage = new FenPage(pages, page_record, countSQL, lick);//调用FenPage构造函数,把当前页面值、页面单位、查询条数SQL语句、树导航传递过来的值传到FenPage.java类
Vector vector = fenpage.Fenye();
allrecord = Integer.parseInt(vector.get(0).toString());
allpage = Integer.parseInt(vector.get(1).toString());
curpage = Integer.parseInt(vector.get(2).toString());
ResultSet rs = (ResultSet) vector.get(3);
%>
<%
while (rs.next()) {
%>
<table border="1">
<tr align="center">
<td align="center" width="95">
<a href=""><%=rs.getString(2)%></a>
</td>
<td align="center" width="95"><%=rs.getString(3)%></td>
<td align="center" width="95"><%=rs.getString(4)%></td>
<td align="center" width="95"><%=rs.getString(5)%></td>
<td>
</td>
</tr>
</table>
<%
}
%>
<p align=center>
<a href=FenPage.jsp?page=1> 首页 </a>
<a href="FenPage.jsp?page=<%=curpage - 1%>"> 上一页 </a>
<a href=FenPage.jsp?page= <%=curpage + 1%>> 下一页 </a>
<a href=FenPage.jsp?page= <%=allpage%>> 尾页 </a> 共
<%=allpage%>
页数 第
<%=curpage%>
页 共
<%=allrecord%>
条记录 每页显示
<%=page_record%>
条
</p>
</body>
</html>
上面这个是页面文件
复制代码 package bean;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import servlet.Database;
public class FenPage {
public int curPage;// 当前页面
public int maxPage;// 总共页面
public int countRows;// 总共页数
public int showRows;// 显示条数
public String SQL;// SQL语句
public String countSQL;// 计算条数SQL
public int lick;
Vector v;
public FenPage(int curPage, int showRows, String countSql, int l) {
this.curPage = curPage;
this.showRows = showRows;
this.countSQL = countSql;
this.lick = l;
}
public Vector Fenye() {
int allpage = 0;
int allrecord = 0;
// 总记录数
ResultSet rs0 = Database.stmt_select(countSQL);
try {
if (rs0.next()) {
allrecord = rs0.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
// 总的页数
allpage = (int) Math.ceil((allrecord + showRows - 1) / showRows);
// 根据用户提交的请求页判断应该显示的当前页
if (curPage > allpage) {
curPage = allpage;
} else if (curPage < 1) {
curPage = 1;
} else {
curPage = curPage;
}
System.out.println("curPage" + curPage);
// 得到符合条件页面的显示记录的结果集rs;
SQL = "SELECT TOP "
+ showRows
+ " * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber,* FROM a where typeID="
+ lick + ") A WHERE RowNumber > " + showRows * (curPage - 1);
rs0 = Database.stmt_select(SQL);
// 声明一个容器实例vector
Vector vector = new Vector();
vector.add(0, new Integer(allrecord));
vector.add(1, new Integer(allpage));
vector.add(2, new Integer(curPage));
vector.add(3, rs0);
return vector;
}
}
上面这个是分页BEAN文件 我觉得写分页还真要看看这文件,有点数据库分页算法,把语句放到SQL里多运行下
只要明白分页原理,其实分页想怎么写就怎么,我的代码虽然简陋,封装得不好,但对于初学来说,这应该是个好的例子,希望对需要的人有点帮助。 |
|