您的位置:首页 > Web前端 > JavaScript

servlet + jsp分页

2013-12-02 21:01 260 查看
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" onclick="pageto()">
</td>
</tr>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: