天天看點

使用Servlet和JSP完成分頁查詢

工程目錄結構:

使用Servlet和JSP完成分頁查詢

1、分頁可以使資料庫表中的資料以表的形式顯示出來,每頁展示限制的數量,直覺明了。

2、分頁查詢語句mysql為:select *from users limit ?,?;

第一個參數為從第一頁開始跳過的條數,第二個參數為每頁顯示的條數

注:跳過的條數=(總頁數-1)/每頁的條數;

假設每頁顯示3條:Integer num=(total-1)/3;

ps.setInt(1,num);

ps.setInt(2,3);

使用Servlet和JSP完成分頁查詢
使用Servlet和JSP完成分頁查詢

轉存失敗重新上傳取消

使用Servlet和JSP完成分頁查詢

3.持久層,在Dao包中寫一個分頁查詢的方法UserDao,根據傳入的總頁數來進行查詢,存放到一個users數組裡面

代碼如下:

public List<User> findAllPage(Integer total){

//數組

List<User> users=new ArrayList<User>();

//擷取連接配接

Connection conn=null;

PreparedStatement ps=null;

ResultSet rs=null;

try{

conn=DBUtils.getIntance();

String sql="select *from users limit ?,?";

ps=conn.preparedStatement(sql);

Integer num=(total-1)*3;//3表示每頁顯示三條資料

ps.setInt(1,num);

ps.setInt(2,3);

rs=ps.executeQuery();

while(rs.hasNext()){

User user=new User();

int id=rs.getInt("id");

String un=rs.getString("username");

String pw=rs.getString("password");

String email=rs.getString("email");

user.setId(id);

user.setUsername(un);

user.setPassword(pwd);

user.setEmail(em);

users.add(user);

}

}catch(Exception e){

}

//System.out.println("users:"+users);

//将使用者傳回

return users;

}

4、控制層,在ActionServlet裡面來處理請求

1)擷取到使用者表的總條數,通過查詢使用者表所有記錄,調用size()方法即可擷取大小。

2)擷取到jsp頁面傳過來的第幾頁

3)調用Dao包下的findAllPage()方法

4)将第幾頁和總頁數放入到request對象裡面,一同轉發給listUsers.jsp

代碼如下:

@Override

protected void service(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

//處理分頁請求

request.setCharacterEncoding("utf-8");

response.setContentType("text/html;charset=utf8");

UserDAO dao=new UserDAO();

int page=Integer.parseInt(request.getParameter("page"));

List<User> users=dao.findAllPage(page);

List<User> allUsers=dao.findAllUser();

int size=allUsers.size();//資料總條數

//下一頁就是page+1,

System.out.println();

int total=size/3;//總頁數

request.setAttribute("total", total);

request.setAttribute("page", page);

System.out.println(users.size());

request.setAttribute("users", users);

request.getRequestDispatcher("/myweb/listUsers.jsp").forward(request, response);

}

5、listUsers.jsp頁面用來展示顯現出來的清單,點選下一頁

代碼如下:

<%

Integer page1=(Integer)request.getAttribute("page");

if(page1==null){

page1=1;

request.setAttribute("page", page1);

}else if(page1>=(Integer)request.getAttribute("total")){

//跳轉到第一頁

request.setAttribute("page", 0);

}

%>

<a href="<%=request.getContextPath()%>/action?page=1" target="_blank" rel="external nofollow" >首頁</a>

<a href="<%=request.getContextPath()%>/action?page=<%= (Integer)request.getAttribute(" target="_blank" rel="external nofollow" page")+1%>">下一頁</a>

注:此處到最後一頁,繼續點選下一頁會跳轉至首頁。

效果圖如下:

使用Servlet和JSP完成分頁查詢
使用Servlet和JSP完成分頁查詢

繼續閱讀