用c3p0连接oracle怎么分页,JSP分页(MySql+c3p0+dbutils)

JSP分页(MySql+c3p0+dbutils)

来源:互联网

作者:佚名

时间:2015-02-16 17:27

为什么要对数据进行分页?当数据较多时,页面就会变的很庞大,不仅会影响到用户的使用,而且还有加重服务器的负担。下面简单的实现了数据的分页。第一步:导入相

为什么要对数据进行分页?当数据较多时,页面就会变的很庞大,不仅会影响到用户的使用,而且还有加重服务器的负担。下面简单的实现了数据的分页。

第一步:导入相应的jar包

3adc101dcb3c1813ed41a95c71657ff5.png

需要导入c3p0,dbutils,mysql驱动等jar包。

第二步:创建数据库和表, 配置c3p0, 创建工具类,User类

创建数据库,并准备测试数据(可以自行生成)

create database contacts;

use contacts;

create table users(

id varchar(32),

username varchar(36),

password varchar(36),

constraint user_pk primary key(id)

);

c3p0-config.xml

30000

30

2

30

10

2

50

3

com.mysql.jdbc.Driver

root

123456

1000

30

2

30

5

2

50

3

com.mysql.jdbc.Driver

root

123456

DataSourceUtil.java

package cn.zq.util;

import java.sql.Connection;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSourceUtil {

private static DataSource ds;

static{

ds = new ComboPooledDataSource("contacts");

}

public static DataSource getDataSource(){

return ds;

}

public static Connection getConnection() throws SQLException{

return ds.getConnection();

}

}

User.java

package cn.zq.domain;

public class User {

private String id;

private String username;

private String password;

public User() {}

public User(String id, String username, String password) {

this.id = id;

this.username = username;

this.password = password;

}

public void setId(String id) {

this.id = id;

}

public void setUsername(String username) {

this.username = username;

}

public void setPassword(String password) {

this.password = password;

}

public String toString() {

return "User [id=" + id + ", username=" + username + ", password="

+ password + "]";

}

public String getId() {

return id;

}

public String getUsername() {

return username;

}

public String getPassword() {

return password;

}

}

第三步:创建并配置servlet,创建显示页面

UserServlet.java

package cn.zq.servlet;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.dbutils.QueryRunner;

import org.apache.commons.dbutils.handlers.BeanListHandler;

import org.apache.commons.dbutils.handlers.ScalarHandler;

import cn.zq.domain.User;

import cn.zq.util.DataSourceUtil;

public class UserServlet extends HttpServlet {

public void init() throws ServletException {

try {

Class.forName("cn.zq.util.DataSourceUtil");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//which page to show.

String pn = request.getParameter("pn");

int pageNum = 1;

try{

pageNum = Integer.parseInt(pn);

}catch(Throwable t){

//ignore

}

int pageSize = 10;

QueryRunner run = new QueryRunner(DataSourceUtil.getDataSource());

try {

String sql = "SELECT COUNT(1) from users";

int totalRecord = run.query( sql, new ScalarHandler() )

.intValue();

System.err.println("totalRecord = " + totalRecord);

//(11 + ( 10 -1))/10

int pageCount = (totalRecord + (pageSize - 1)) / pageSize;

if(pageNum < 0){

pageNum = 1;

}

if(pageNum > pageCount){

pageNum = pageCount;

}

//0, 10 10, 20

int m = (pageNum - 1)*pageSize;

int n = pageSize;

sql = "SELECT * FROM users LIMIT ?, ?";

List userList = run.query(sql, new BeanListHandler(User.class), m, n);

//分页显示多少个页号

int no = 10;

int beginPageIndex = 0;

int endPageIndex = 0;

if(pageCount <= no){

beginPageIndex = 1;

endPageIndex = pageNum;

}else{

beginPageIndex = pageNum - no/2;

endPageIndex = beginPageIndex + (no -1);

if(beginPageIndex < 1){

beginPageIndex = 1;

endPageIndex = no;

}

if(endPageIndex > pageCount){

endPageIndex = pageCount;

beginPageIndex = endPageIndex - (no - 1);

}

}

request.setAttribute("pageCount", pageCount);

request.setAttribute("totalRecord", totalRecord);

request.setAttribute("pageNum", pageNum);

request.setAttribute("beginPageIndex", beginPageIndex);

request.setAttribute("endPageIndex", endPageIndex);

request.setAttribute("userList", userList);

request.getRequestDispatcher("/page/user.jsp")

.forward(request, response);;

} catch (Exception e) {

e.printStackTrace();

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Storm的实时情绪分析示例

实时情感分析是指处理自然语言文本&#xff08;或语音&#xff09;流以提取主观信息。 琐碎的用例用于构建推荐引擎或查找社交媒体趋势。 我选择了Apache Storm作为实时处理引擎。 Storm非常强大&#xff08;我们正在生产中使用它&#xff09;&#xff0c;并且非常容易在其之上…

flink sql设置并行度_《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍

前言之所以写这个是因为前段时间自己的项目出现过这样的一个问题&#xff1a;Caused by: akka.pattern.AskTimeoutException: Ask timed out on [Actor[akka://flink/user/taskmanager_0#15608456]] after [10000 ms]. Sender[null] sent message of type "org.apache.f…

zabbix3.2监控

自动化运维框架 运维标准流程监控管理容量管理、关联关系、任务管理、自动部署、分布式集群、传统集群、机器管理安全控制灾难管理 自动化监控 监控评估数据采集主动式数据采集: client、公共插件、自定义脚本被动式服务状态: 服务状态、程序状态、用户访问质量第三方信息 公…

fasttext 文本分类_一文综述经典的深度文本分类方法

作者 | 何从庆转载自AI算法之心(ID:AIHeartForYou)笔者整理最近几年比较经典的深度文本分类方法&#xff0c;希望帮助小伙伴们了解深度学习在文本分类中的应用。Convolutional Neural Networks for Sentence Classification (EMNLP 2014)Kim在EMNLP2014提出的TextCNN方法&…

vi/vim 编辑器详解

vi/vim &#xff1a; 强大的编辑器 进入vi的命令 vi filename :打开或新建文件&#xff0c;并将光标置于第一行首 vi n filename &#xff1a;打开文件&#xff0c;并将光标置于第n行首 vi filename &#xff1a;打开文件&#xff0c;并将光标置于最后一行首 vi /pattern …

实验三+067+冯艳芳

一、实验目的 掌握黑盒测试用例设计方法 二、实验要求 &#xff08;1&#xff09;对被测程序进行黑盒测试用例设计 &#xff08;2&#xff09;运用等价类、边界值、决策表、状态图法等进行测试用例设计。 &#xff08;3&#xff09;对手机上任意一款音乐软件进行黑盒测试实践。…

python越来越慢_为什么Python中的串联速度越来越慢?

为什么在某些情况下,Python 3中的连接似乎比Python 2中的连接慢&#xff1f; 影响最大的串联方法似乎是字节对象的连续串联,从O(n)到O(n?)操作. 我的分析代码大部分在这里&#xff1a; #!/usr/bin/env python from operator import concat from sys import version, version_i…

jvm gc策略_IBM JVM调整– gencon GC策略

jvm gc策略本文将向您详细介绍从Java虚拟机&#xff08;例如HotSpot或JRockit&#xff09;迁移到IBM JVM时重要的Java堆空间调整注意事项。 此调整建议基于我为我的一个IT客户端执行的最新故障排除和调整任务。 IBM JVM概述 正如您可能从其他文章中看到的那样&#xff0c;IBM …

芬兰高性能图表控件-免费试用并提供技术支持

图表控件对于很多技术研发人员、工程设计师来说肯定不陌生&#xff0c;但市面上已有的图表控件产品大多功能单一、性能也不稳定&#xff0c;很难满足不同人群在不同场合的使用需求。为此&#xff0c;专注于开发高性能和最先进的数据可视化工具公司Arction则给出了完美的解决方案…

linux open函数_Linux驱动开发 / 字符设备驱动内幕 (1)

哈喽&#xff0c;我是老吴&#xff0c;继续记录我的学习心得。一、保持专注的几个技巧将最重要的事放在早上做。待在无干扰环境下&#xff0c;比如图书馆。意识到刚坐下开始投入工作前&#xff0c;有点负面小情绪是特别正常的现象。让“开心一刻”成为计划的一部分。拥有合情合…

github删除文件_github 仓库中删除历史大文件

问题如果git中提交了大文件&#xff0c;而且保存到了版本库中&#xff0c;那在下载或者克隆git包的时候&#xff0c;速度会非常慢。再加上github在国内访问本来就很慢&#xff0c;可能会导致包无法下载(克隆)。为了提升下载(克隆)速度&#xff0c;可以永久的删除这些文件(包括该…

linux plc编程软件,基于Linux平台的可编程控制器软PLC设计

实例下面以一个简单的对3并口通道循环控制为例&#xff0c;说明软PLC 的工作流程。(1)梯形图编程。从软PLC 主界面进入后&#xff0c;启动梯形图编程&#xff0c;调用梯形图编程的主程序。梯形图编程共需要调用梯形图界面模块、关闭模块、IO 模块&#xff0c;这些均在配置文件中…

insert into语句_入门MySQL——DML语句篇

前言&#xff1a;在上篇文章中&#xff0c;主要为大家介绍的是DDL语句的用法&#xff0c;可能细心的同学已经发现了。本篇文章将主要聚焦于DML语句&#xff0c;为大家讲解表数据相关操作。这里说明下DDL与DML语句的分类&#xff0c;可能有的同学还不太清楚。DDL(Data Definitio…

linux不重启换root密码是什么原因,在Linux下修改和重置root密码的方法(超简单)

刚开始接触linux的人&#xff0c;忘记了root密码可能会不知所措。想找回自己的root密码&#xff0c;但是又不知道方法。其实&#xff0c;只需要简单的几步就可以重置自己的root密码了(找回密码我也不会)1.开机HcQBEm上敲击e&#xff0c;然后编辑选项2.在linux16这一行&#xff…

SCP-bzoj-1019

项目编号&#xff1a;bzoj-1019 项目等级&#xff1a;Safe 项目描述&#xff1a; 戳这里 特殊收容措施&#xff1a; 对于一个hanoi&#xff0c;知道了各种移动操作的优先级&#xff0c;也就确定了方案。可以证明对于盘子数为N的hanoi&#xff0c;任意移动方案都等价于将数目为N…

一键分享手机代码_通过广告路由器指定手机浏览器自动认证WIFI上网 附代码

说说应用过程&#xff0c;下面用手机QQ浏览器为例。在路由器搭建免费WIFI&#xff0c;用户连接免费WIFI后&#xff0c;使用手机QQ浏览器点击打开任意网页即可自动通过认证并上网&#xff0c;有的手机会自动打开认证网页&#xff0c;如果使用其他手机浏览器则自动跳转到引导认证…

netbeans7.4_NetBeans 7.1:创建自定义提示

netbeans7.4我已经在帖子中对我最喜欢的NetBeans提示进行了讨论&#xff0c;这些帖子中包含用于现代化Java代码的七个NetBeans提示和七个不可或缺的NetBeans Java提示 。 这两个帖子中涉及的十四个提示仅占NetBeans支持的“即开即用”提示总数的一小部分。 但是&#xff0c;由于…

linux uboot启动流程分析,uboot启动流程分析

uboot版本为NXP维护的2016.03版本下载地址为http://git.freescale.com/git/...分析uboot的启动流程&#xff0c;需要编译一下uboot&#xff0c;然后打开链接脚本u-boot.lds在u-boot.lds中1 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf…

JavaOne 2015 –第二十版十大收获

我们刚刚在旧金山有了JavaOne的第二十版。 这将是我自2004年以来第十二次参加不间断的系列活动。最大的教训是什么&#xff0c;可以揭示Java的未来。 模块化斗争 自从Java 2007首次提到模块以来&#xff0c;已经花费了将近9年的时间&#xff0c;或者说&#xff0c;直到2016年9…

IOS--文件管理NSFileManager

iOS的沙盒机制。应用仅仅能訪问自己应用文件夹下的文件。iOS不像android。没有SD 卡概念。不能直接訪问图像、视频等内容。iOS应用产生的内容&#xff0c;如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下&#xff0c;每一个沙盒含有3个文件 夹&#xff1a;Docum…