java编写的基于mysq limit的分页小插件 升级版

前些天就写了个分页的,http://skymr.iteye.com/blog/665242

 

那个不太好,在写配置信息时都得在servlet中,每使用一次可得重写配置,而且在取得页面总数时,得使用sql语句重新查询,学习了一下dom4j解析xml,昨天又配置了Hiberate,想把知识巩固一点,于是赶紧完善了这个分页的插件。

在配置好xml文件后,只要在请求分页时,传入要显示的页码,读取xml文件,再实例化一个pojo类,查询数据库,调用对应的set方法,存于session中即可。

1.编写pojo类,如:

package cn.netjava.model;

public class User {

	private String name;
	private int id;
	private String pwd;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public int getId() {
		
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
}

 

2.实现cn.netjava.db.DB_Interface接口

如:

 

package a;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import cn.netjava.db.DB_Interface;
import cn.netjava.debug.Log;

public class A implements DB_Interface{
	Connection conn = null;
	public Connection getConn() {
		

		String url="jdbc:mysql://localhost:3306/catpage";
		String root="root";
		String pwd="root";
		Log.printLog("user:"+root+"\tpwd:"+pwd);
		if(conn!=null){
			return conn;
		}
		try {
			Log.printLog("user:"+root+"\tpwd:"+pwd);
			Class.forName("com.mysql.jdbc.Driver");
			Log.printLog("user:"+root+"\tpwd:"+pwd);
			conn=DriverManager.getConnection(url,root,pwd);
			Log.printLog("连接成功");
			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			Log.printLog(this.getClass()+"中,找不到Driver");
			
		} catch (SQLException e) {

			e.printStackTrace();
			Log.printLog(this.getClass()+"中,连接出错");
		}
		return conn;

	}
}

 

这个类该怎么写就看自己了,如果不想再建一个Connection,一定要把Connection对象传入。

 

3。编写pc.cfg.xml文件,在src里新建xml文件,命名为pc.cfg.xml 

xml编写格式:

<?xml version="1.0" encoding="UTF-8"?>

<users>
<pc id="1">//分页id
//name为pojo类名
//table为表名
//dbclassname为实现DB_Interface接口的类名
<class name="cn.netjava.model.User" table="user" dbclassname="cn.netjava.db.A">
//name为pojo类里的属性,column为对应数据库里的字段名
<property name="id" column="id"/>
<property name="name" column="name"/>
<property name="pwd" column="pwd"/>
//每页显示数目
<per num="10"/>
</class>
</pc>
</users>

 4。控制显示,在servlet里写,如:

package a;
import java.io.IOException;
import java.util.List;

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 cn.netjava.plugin.PageDao;


public class Control extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String spage = request.getParameter("page");//用户请求显示哪一页

		PageDao pd = PageDao.create(1);//传入分页id,我们的配置文件xml里只有一个id=1;
		HttpSession session = request.getSession();
		int page = 0;
		if(spage!=null){
			page = Integer.parseInt(spage);
		}
		try{
			int pagenum = pd.getTotalPage();//得到总页数
			session.setAttribute("pagenum",pagenum);
			session.setAttribute("pageindex",page);
			List<Object> listuser  = pd.getType(page);//得到pojo实例列表
			session.setAttribute("listuser",listuser);
			response.sendRedirect("cutpage.jsp");
		}
		catch(Exception e){
			e.printStackTrace();
		}

	}

}

 

5.jsp页面

 共${pagenum }页
	<table>
	<tr>
	<td>id</td> <td>name</td> <td>密码</td>
	</tr>
	<%
		List<Object> listuser = (List<Object>)session.getAttribute("listuser");
		for(Object o : listuser)
		{
			User u = (User)o;
			%><tr>
			<td><%=u.getId() %></td>
			<td><%=u.getName() %></td>
			<td><%=u.getPwd() %></td>
			</tr>
			<%
		}
	 %>
	</table>
	<input type = "button" value="上一页" οnclick="before()">
	<input type = "button" value="下一页" οnclick="next()">
	<script type="text/javascript">
	function before()
	{
		window.location.href="control?page="+${pageindex-1};
	}
	function next()
	{
		window.location.href="control?page="+${pageindex+1};
	}
	</script>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值