Java 웹 단순 페이징 표시 예제 코드

高洛峰
풀어 주다: 2016-11-01 11:42:00
원래의
2056명이 탐색했습니다.

이 글에서는 Java 웹 단순 페이징 표시 예제 코드에 대한 관련 정보를 주로 소개합니다. 이 글은 총 페이지 수를 계산하고 지정된 페이지 데이터를 쿼리하여 페이징 효과를 구현하는 데 매우 유용합니다. 필요한 친구는

을 참조할 수 있습니다. 이 기사에서는 두 가지 방법을 사용합니다. (1) 총 페이지 수를 계산합니다. (2) 지정된 페이지 데이터를 쿼리하여 간단한 페이징 효과를 얻습니다.

아이디어: 먼저 DAO 객체에 페이징 쿼리 메서드를 제공해야 합니다. 컨트롤 레이어에서 이 메서드를 호출하면 지정된 페이지의 데이터를 찾을 수 있습니다. , EL 표현식과 JSTL을 사용하여 데이터를 쿼리합니다.

먼저 렌더링을 보여드리겠습니다:

주제 외: 이 페이지는 다음을 보여줍니다. "프레젠테이션 레이어-제어 레이어-DAO 레이어-데이터베이스"라는 설계 개념을 사용하여 구현됩니다. 개선이 필요한 영역이 있으면 모두가 이를 제시하고 함께 배우고 발전할 것입니다. 더 이상 고민하지 말고 자세한 단계를 살펴보겠습니다.

1. DAO 레이어 - 데이터베이스

JDBCUtils 데이터베이스를 열고 닫는 데 사용되는 클래스입니다. 핵심 코드는

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtils {
private Connection conn=null;
private PreparedStatement pstmt=null; 
/**
* connect 连接数据库
* @return
*/
public Connection connect(){
String user="root";
String password="1234";
String driverClass = "com.mysql.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://localhost:3306/book";
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(jdbcUrl, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* close 关闭数据库
* @param conn
* @param pstmt
* @param resu
*/
public void close(Connection conn,PreparedStatement pstmt,ResultSet result){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
}
}
if(pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(result != null){
try {
result.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
로그인 후 복사

getPage() 메소드와 listUser( )를 사용하여 각각 계산합니다. 총 페이지 수와 지정된 페이지의 데이터를 쿼리합니다. 핵심 코드는 다음과 같습니다.

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.db.JDBCUtils;
public class UserDao {
/**
* 计算总的页数
* @return
*/
public int getPage(){
int recordCount=0,t1=0,t2=0;
PreparedStatement pstmt=null;
ResultSet result=null;
JDBCUtils jdbc=new JDBCUtils();
Connection conn=jdbc.connect();
String sql="select count(*) from books";
try {
pstmt=conn.prepareStatement(sql);
result=pstmt.executeQuery();
result.next();
recordCount=result.getInt(1);
t1=recordCount%5;
t2=recordCount/5;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.close(conn, pstmt, result);
}
if(t1 != 0){
t2=t2+1;
}
return t2;
}
/**
* 查询指定页的数据
* @param pageNo
* @return
*/
public List<User> listUser(int pageNo){
PreparedStatement pstmt=null;
ResultSet result=null;
List<User> list=new ArrayList<User>();
int pageSize=5;
int page=(pageNo-1)*5;
JDBCUtils jdbc=new JDBCUtils();
Connection conn=jdbc.connect();
String sql="select * from books order by id limit ?,?";
try {
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, page);
pstmt.setInt(2, pageSize);
result=pstmt.executeQuery();
while(result.next()){
User user=new User();
user.setId(result.getInt(1));
user.setName(result.getString(2));
user.setNumber(result.getString(3));
list.add(user);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.close(conn, pstmt, result);
}
return list;
}
}
로그인 후 복사

User 클래스는 쿼리된 데이터를 저장하는 데 사용됩니다. 핵심 코드는 다음과 같습니다.

public class User {
private int id;
private String name;
private String number;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
로그인 후 복사

2. 컨트롤 레이어

ListUser 클래스는 내부적으로 UserDao를 호출합니다. 객체는 데이터를 쿼리하고 페이지를 할당하여 데이터를 표시합니다.

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.User;
import com.dao.UserDao;
public class ListUser extends HttpServlet {
public ListUser() {
super();
}
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 {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
int pageNo = 1;
UserDao userdao=new UserDao();
List<User> lists=new ArrayList<User>();
String pageno=request.getParameter("pageNos");
if(pageno != null){
pageNo=Integer.parseInt(pageno);
}
lists=userdao.listUser(pageNo);
int recordCount=userdao.getPage();
request.setAttribute("recordCount", userdao.getPage());
request.setAttribute("listss", lists);
request.setAttribute("pageNos", pageNo);
request.getRequestDispatcher("userlist.jsp").forward(request, response);
}
public void init() throws ServletException {
// Put your code here
}
}
로그인 후 복사

3. 프리젠테이션 계층

출력 페이지 userlist.jsp는 EL 및 JSTL을 사용하여 다음을 수행합니다. 출력 쿼리 결과의 핵심 코드는 다음과 같습니다.

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
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 &#39;userlist.jsp&#39; 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">
-->
<style type="text/css">
th,td{width: 150px;border: 2px solid gray;text-align: center;}
body{text-align: center;}
a{text-decoration: none;}
table {border-collapse: collapse;}
</style>
</head>
<body>
<h2 align="center">图书信息</h2>
<table align="center">
<tr><td>书号</td><td>书名</td><td>库存量</td></tr>
</table>
<table align="center">
<c:forEach items="${listss}" var="person">
<tr>
<td class="hidden-480">${person.id}</td>
<td class="hidden-480">${person.name }</td>
<td class="hidden-480">${person.number }</td>
</tr>
</c:forEach>
</table>
<br>
<c:if test="${pageNos>1 }">
<a href="ListUser?pageNos=1" >首页</a>
<a href="ListUser?pageNos=${pageNos-1 }">上一页</a>
</c:if>
<c:if test="${pageNos <recordCount }">
<a href="ListUser?pageNos=${pageNos+1 }">下一页</a>
<a href="ListUser?pageNos=${recordCount }">末页</a>
</c:if>
<form action="ListUser">
<h4 align="center">共${recordCount}页 &nbsp
<input type="text" value="${pageNos}" name="pageNos" size="1">页
<input type="submit" value="到达">
</h4>
</form>
</body>
</html>
로그인 후 복사

위 다음은 편집기에서 소개한 간단한 Java 웹 페이징 표시 예제 코드입니다. 질문이 있으신 경우, 메시지를 남겨주시면 편집자가 시간 내에 답변해 드리겠습니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!