zoukankan      html  css  js  c++  java
  • 基于MySQl的分页显示

    <%@page import="java.sql.DriverManager"%>
    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.PreparedStatement"%>
    <%@page import="java.sql.Connection"%>
    <%@page import="com.contrl.*"%>
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> //导入JSTL
    <%
    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 'index.jsp' 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">
    	-->
      </head>
      <%
        		int PageSize = 3; //设置页面大小
        		//获得当前页
        		String tCurrentPage = null; 
        		tCurrentPage = request.getParameter("currentPage");
        		//设置当前页
        		int currentPage = 0;
        		if (tCurrentPage != null) {
        			currentPage = Integer.parseInt(tCurrentPage.trim());	
        		} 
        		System.out.println("currentPage = " + currentPage + " PageSize =  " + PageSize);
        		//设置起始坐标
        		int startIndex = currentPage*PageSize;
        		//放入request
        		request.setAttribute("currentPage",currentPage);
        		
        		//利用JDBC获得所有用户
        		List<User> users = new ArrayList<User>();
        		
        		String driverName = "com.mysql.jdbc.Driver";
        		String url = "jdbc:mysql://localhost:3306/test";
        		String username = "root";
        		String password = "1";
        		
        		Class.forName(driverName);
        		Connection conn = null;
        		PreparedStatement pst = null;
        		ResultSet rs = null;
        		conn = DriverManager.getConnection(url, username, password);
        		//基于MySQL的limit分页显示第一个参数起始位置(从0开始), 第二个参数为页面大小
        		String sql = "select * from users limit ?,?";
        		pst = conn.prepareStatement(sql);
        		pst.setInt(1,startIndex);
        		pst.setInt(2,PageSize);
        		
        		rs = pst.executeQuery();
        		User user = null;
        		while (rs.next()) {
        			user = new User();
        			user.setId(rs.getInt("id"));
        			String tName = rs.getString("name");
        			//System.out.println("T = " +  tName);
        			String name = new String(tName.getBytes("ISO-8859-1"),"utf-8");
        			System.out.println("name = " + name);
        			user.setName(tName);
        			//System.out.println(user.getId() + " " + user.getName());
        			users.add(user);
        		}
        		//将所有的用户放入request中
        		request.setAttribute("users", users);
        		
        		//获得总页数
        		int allPage = 0;
        		sql = "select count(*) from users";
        		pst = conn.prepareStatement(sql);
        		rs = pst.executeQuery();
        		if (rs.next()) {
        			allPage = (Integer.parseInt(rs.getString(1)) + PageSize - 1) / PageSize;
        		}
        		System.out.println("allPage = " + allPage);
        		//设置最大页数
        		request.setAttribute("allPage", allPage);
        	%>
        	
      <body>
        	
        	<table border="1" align="center">
        		<tr> <th>ID</th>   <th>姓名</th> </tr>
        		<c:forEach items="${users}" var="user">
        			<tr>
    	    			<td> ${user.id} </td>
    	                <td> ${user.name} </td>
    	             </tr>
        		</c:forEach>
        	</table>
        	
        	<div align="center">
        		<a href="?currentPage=0">首页</a>
        		<c:if test="${currentPage == 0}"> 上一页</c:if>
        		<c:if test="${ currentPage >= 1}">   <a href="?currentPage=${currentPage - 1 }"> 上一页 </a>  </c:if>
        		
        		<c:if test="${currentPage == allPage - 1}"> 下一页</c:if>
        		<c:if test="${ currentPage < allPage - 1}">   <a href="?currentPage=${ currentPage + 1 }"> 下一页 </a>  </c:if>
        		
        		<a href="?currentPage=${ allPage - 1 }">末页</a>
        		
        		<b> ${allPage }</b>
        	</div>
        	
        	
        	
      </body>
    </html>
    

      

    在这这部分代码时最让我头疼的就是中文乱码问题了。

    最后的解决办法是:

    ① 首先把MySQL的服务停掉 在运行窗口输入:net stop mysql
    ② 把服务器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等……
    具体操作为:打开mysql安装目录下的my.ini;
    找到default-character-set,将其改为自己想用的字符集:GB2312或是utf8等……,要注意的是这里有两个default-character-set,用ctrl+f定位在文件最前面输入default就会找到,都要改过来;
    ③ 重启MySQL服务器,在运行窗口输入:net start mysql
    ④ 最重要的是一点是,到这里我们已经能够解决乱码问题了,可问题是我们依然还会出现乱码问题,这是因为我们现在的表被创建的时候用的是默认的字符集(latin1),所以这时候我们要把表删除,然后重建就可以了
    

      

    我是在windos下弄得,改成utf-8的话,控制台会出现中文乱码而且不能插入中文,但是Navicat没问题,后来改成GB2312就好了。

    核心部分还是MySQL的limit?,?分页, 第一个表示分页的开始坐标, 第二个参数表示页面大小。

  • 相关阅读:
    LeetCode:位运算实现加法
    Java基础教程:多线程基础——内存模型
    Python:笔记(3)——面向对象编程
    Java基础教程:反射基础
    MYSQL:基础——3N范式的表结构设计
    GIT学习笔记(1):创建版本库
    你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
    你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
    MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
    MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
  • 原文地址:https://www.cnblogs.com/E-star/p/3389907.html
Copyright © 2011-2022 走看看