servlet + jsp分页

public class EmpListServlet extends HttpServlet {
 
	private static final int PAGEROW = 4;//设置一个页面里面有四条数据
 
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
 
		response.setContentType("text/html");
 
		EmpDao ed = new EmpDao();//创建一个数据库操作的对象
		int page = 1;
 
		String nowPage = request.getParameter("nowPage");//获取当前页数
 
		if(nowPage!=null && !"".equals(nowPage)){
			//如果传入的值为非空,则将page设置传入的值,否则page值仍为1
			page = Integer.parseInt(nowPage);
		}
 
		int count = ed.getRowCount();//获取数据库中所有的条目的总数
 
		//得到总共的分页数目
		int pageCount = count%PAGEROW==0?count/PAGEROW:count/PAGEROW+1;
		//如果数据库中的条数不能填满最后一个页面,那页面数就加上1
		//(整除除不尽会去掉小数部分,因而页面会少一个,所以需要+1)
 
		if(page<1){//如果传如的页数小于1了,那就仍旧在第一页
			page = 1;
		}
		if(page > pageCount){//如果传入的页数超过了最大页数,那么就仍旧到最大页数
			page = pageCount;
		}
 
		int start = (page-1) * PAGEROW + 1;//页面里起始的数据行,
		int end = start + PAGEROW - 1;//页面里最末尾的数据行
 
		List elist = ed.findEmpList(start,end);//根据开始和结束从数据库得到列表
 
		request.setAttribute("elist", elist);
		request.setAttribute("page", page);
		request.setAttribute("endPage", pageCount);
 
		RequestDispatcher dispatcher = request.getRequestDispatcher("main.jsp");
		dispatcher.forward(request, response);
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}
 
}


接下来是EmpDao中调用数据库的方法

public List findEmpList(int start,int end) {
	List list = new ArrayList();
	Connection con = null;
	Statement st = null;
	ResultSet rs = null;
	try {
		con = getConnection();
		st = con.createStatement();
		String sql = "select * from (select e.*, rownum rn from emp e) 
				where rn >="+start+" and rn <="+end;
		rs = st.executeQuery(sql);
		while (rs.next()) {
			Emp emp = new Emp();
			emp.setEmpno(rs.getString(1));
			emp.setEname(rs.getString(2));
			emp.setJob(rs.getString(3));
			emp.setMgr(rs.getString(4));
			Date d = rs.getDate(5);
			if (d != null) {
				emp.setHiredate(d.toString());
			}
			emp.setSal(rs.getString(6));
			emp.setComm(rs.getString(7));
			emp.setDeptno(rs.getString(8));
			list.add(emp);
		}
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		free(con, st, rs);
	}
 
	return list;
}

然后是JS处理手工输入页面的跳转

<script type="text/javascript">
	function pageto(){
		var np = document.all("nowPage").value;
		if(!isNaN(np)){
			if(np.length>0){
				location.href="EmpListServlet?nowPage="+np;
			}
		}else{
			document.all("nowPage").value="";
			alert("请输入合法的数字!");
		}
	}
</script>

下面是翻页部分的jsp代码

<tr>
	<td colspan="10">
		<a href="EmpListServlet">首页</a>
		<a href="EmpListServlet?nowPage=${page-1 }">上一页</a> 
		<a href="EmpListServlet?nowPage=${page+1 }">下一页</a> 
		<a href="EmpListServlet?nowPage=${endPage }">尾页</a>
		<input type="text" id="nowPage" size="3" />
		<input type="button" value="GO" οnclick="pageto()">   
	</td>
</tr>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值