java数据分装到page_jsp+servlet+javabean实现数据分页方法完整实例

本文实例讲述了jsp+servlet+javabean实现数据分页方法。分享给大家供大家参考,具体如下:

这里秉着且行且记的心态,记录下学习过程,学得快忘得快,生怕遗忘,以备日后使用。

用到的部分代码是自己在网上查找,并自己修改,加上自己的理解。也不知道算不算原创,只做自己学习记录。

使用相关:postgresql数据库、dom4j、jsp、servlet

一、首先是工程格局,来个全局视图方便读者与自己查看与使用

0f46e4ee7308f3bbe58806b3b97051b0.png

思路为:

以config.xml文件记录配置信息,以方便数据库更改,方便移植与重用。

dom4jutil.java用于解析xml属性文件以获得需要数据

postgresql_util.java分装数据连接与数据库操作

pageproperties.java为表格分页属性javabean

pageproperties.java封装分页操作

page.java为分页主要操作

tablepage.jsp为效果显示界面

用到的第三方jar包:

dom4j-1.6.1.jar用于xml文件解析

postgresql-9.3-1101.jdbc4.jar用于jdbc连接postgresql数据库

分页效果如下:能通过点击上页下页实现翻页,输入指定页面跳转(超出范围跳转到第1或最后页)。具体实现请参见详细代码,我都贴上来了。小菜鸟一名,处于正在学习阶段,有大神能指点下当然更好,希望不吝赐教!

26694d13f422560820d40431c589b752.png

二、具体代码实现

1、config.xml数据库连接信息属性文件

]>

org.postgresql.driver

jdbc:postgresql://localhost:5432/java

admin

k42jc

2、dom4jutil.java

package util;

import org.dom4j.document;

import org.dom4j.documentexception;

import org.dom4j.element;

import org.dom4j.io.saxreader;

/**

* 用于解析xml属性文件

* @author johsonmuler

*

*/

public class dom4jutil {

private static element root=null;

static{//静态代码块

//创建解析对象

saxreader sr=new saxreader();

//获取当前工程路径

// string url=system.getproperty("user.dir");

string url=dom4jutil.class.getresource("").getpath();

// system.out.println(url);

try {

//通过文件路径获取配置文件信息

document doc=sr.read(url+"config.xml");

//获取根节点

root=doc.getrootelement();

} catch (documentexception e) {

e.printstacktrace();

}

}

public static string getpostgresdata(string str){

//以根节点为基础,获取配置文件数据

element e=root.element(str);

string data=e.gettext();

return data;

}

public static void main(string[] args) {

// string url=dom4jutil.class.getresource("..").getpath();

// system.out.println(system.getproperty("user.dir"));

// system.out.println(url);

string driver=getpostgresdata("driver");

string url=getpostgresdata("url");

system.out.println(driver);

system.out.println(url);

}

}

3、postgresql_util.java

package util;

import java.sql.preparedstatement;

import java.sql.statement;

import java.sql.connection;

import java.sql.drivermanager;

import java.sql.resultset;

import java.sql.sqlexception;

import java.util.list;

public class postgresql_util {

private static dom4jutil dom=new dom4jutil();

private static connection c=null;

private static resultset rs=null;

private static string driver=dom.getpostgresdata("driver");

private static string url=dom.getpostgresdata("url");

private static string username=dom.getpostgresdata("username");

private static string pwd=dom.getpostgresdata("pwd");

public postgresql_util(){

try {

class.forname(driver);

c=drivermanager.getconnection(url);

} catch (classnotfoundexception e) {

system.out.println("未找到指定类:"+e.getmessage());

} catch (sqlexception e) {

system.out.println("获取连接异常:"+e.getmessage());

}

}

/**

* 数据查询方法(statement)

* @param sql

* @return

* @throws sqlexception

*/

public resultset executequery(string sql) throws sqlexception{

statement s=c.createstatement();

rs=s.executequery(sql);

return rs;

}

/**

* 重载方法(preparedstatement)

* @param sql

* @param list

* @return

* @throws sqlexception

*/

public resultset executequery(string sql,list list) throws sqlexception{

preparedstatement ps=c.preparestatement(sql);

for(int i=0;i

system.out.println(list.get(i));

system.out.println(i+1);

ps.setobject(i+1, list.get(i));

}

rs=ps.executequery();

c.close();

return rs;

}

/**

* 数据更新方法(添加,删除,更改)(statement)

* @param sql

* @throws sqlexception

*/

public int executeupdate(string sql) throws sqlexception{

statement s=c.createstatement();

int i=s.executeupdate(sql);

c.close();

return i;

}

/**

* 重载方法(preparedstatement)

* @param sql

* @param list

* @throws sqlexception

*/

public int executeupdate(string sql,list list) throws sqlexception{

preparedstatement ps=c.preparestatement(sql);

for(int i=0;i

ps.setobject(i+1, list.get(i));

}

int i=ps.executeupdate();

c.close();

return i;

}

/**

* 单独的获取连接

* @return

* @throws classnotfoundexception

* @throws sqlexception

*/

public static connection getconnection() throws classnotfoundexception, sqlexception{

class.forname(driver);

c=drivermanager.getconnection(url);

return c;

}

}

4、pageproperties.java

package bean;

import java.sql.resultset;

public class pageproperties {

private int currentpage;//当前页号

private int totalpages;//总页数

private int totalrecords;//总数据条数

private resultset rs;//动态结果集

public pageproperties() {

super();

}

public pageproperties(int currentpage, int totalpages, int totalrecords,

resultset rs) {

super();

this.currentpage = currentpage;

this.totalpages = totalpages;

this.totalrecords = totalrecords;

this.rs = rs;

}

public int getcurrentpage() {

return currentpage;

}

public void setcurrentpage(int currentpage) {

this.currentpage = currentpage;

}

public int gettotalpages() {

return totalpages;

}

public void settotalpages(int totalpages) {

this.totalpages = totalpages;

}

public int gettotalrecords() {

return totalrecords;

}

public void settotalrecords(int totalrecords) {

this.totalrecords = totalrecords;

}

public resultset getrs() {

return rs;

}

public void setrs(resultset rs) {

this.rs = rs;

}

}

5、tablepage.java

package bean;

import java.sql.resultset;

public class pageproperties {

private int currentpage;//当前页号

private int totalpages;//总页数

private int totalrecords;//总数据条数

private resultset rs;//动态结果集

public pageproperties() {

super();

}

public pageproperties(int currentpage, int totalpages, int totalrecords,

resultset rs) {

super();

this.currentpage = currentpage;

this.totalpages = totalpages;

this.totalrecords = totalrecords;

this.rs = rs;

}

public int getcurrentpage() {

return currentpage;

}

public void setcurrentpage(int currentpage) {

this.currentpage = currentpage;

}

public int gettotalpages() {

return totalpages;

}

public void settotalpages(int totalpages) {

this.totalpages = totalpages;

}

public int gettotalrecords() {

return totalrecords;

}

public void settotalrecords(int totalrecords) {

this.totalrecords = totalrecords;

}

public resultset getrs() {

return rs;

}

public void setrs(resultset rs) {

this.rs = rs;

}

}

6、page.java这是主要处理类,servlet

package servlet;

import java.io.ioexception;

import java.io.printwriter;

import java.sql.resultset;

import java.sql.sqlexception;

import javax.servlet.servletexception;

import javax.servlet.http.httpservlet;

import javax.servlet.http.httpservletrequest;

import javax.servlet.http.httpservletresponse;

import util.postgresql_util;

import bean.pageproperties;

import bean.tablepage;

public class page extends httpservlet {

public void service(httpservletrequest request, httpservletresponse response)

throws servletexception, ioexception {

request.setcharacterencoding("utf-8");

response.setcontenttype("text/html;charset=utf-8");

printwriter out = response.getwriter();

/**

* 通过tablepage设置分页属性

*

*/

tablepage tb=new tablepage();

//获取当前表格显示的页码

int currentpage=tb.currentpage(tb.getstrpage(request, "page"));

system.out.println(currentpage);

//设置每页显示数据条数

tb.setpagerecord(10);//设置每页显示10条数据

/**

* 通过xxsql_util设置jdbc连接及数据处理

*/

postgresql_util postgres=new postgresql_util();

try {

resultset rs_count=postgres.executequery("select count(*) as c from student");

rs_count.next();

//获得总的数据条数

int totalrecords=rs_count.getint("c");

//根据数据表的总数据条数获取页面显示表格的总页数

int totalpages=tb.gettotalpages(totalrecords);

if(currentpage>totalpages){

currentpage=totalpages;//保证最后一页不超出范围

}

//根据数据库表信息和当前页面信息获得动态结果集

resultset rs=tb.getpageresultset(postgres.executequery("select * from student"), currentpage);

/**

* 将数据加入javabean

*/

pageproperties pp=new pageproperties(currentpage, totalpages, totalrecords, rs);

/**

* 将javabean转发至前端

*/

request.setattribute("result", pp);

request.getrequestdispatcher("tablepage.jsp").forward(request, response);

} catch (sqlexception e) {

system.out.println("class page:"+e.getmessage());

// e.printstacktrace();

}

}

}

7、tablepage.jsp前台显示效果

string path = request.getcontextpath();

string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/";

%>

简单数据分页
姓名性别年龄分数

pageproperties pp=(pageproperties)request.getattribute("result");

resultset rs=pp.getrs();

%>

int i=1;

while(rs.next()){

%>

i++;

if(i>10)

break;

}

%>

共条数据

本页条

第页

if ( pp.getcurrentpage() > 1 )

{

%><

}

%>

if ( pp.getcurrentpage() < pp.gettotalpages() )

{

%>下一页>>

}

%>

function skip(){

var v=document.getelementbyid("input_text").value;

location.href="page?page="+v;

}

初步看,感觉后台代码实在是繁琐,但这是考虑到程序健壮性与可移植性,方便代码重用。以后要用,根据自己的需要在属性文件(config.xml)中配置相关jdbc驱动,在jsp页面通过request获得后台servlet(page.jsp)的转发结果("result"),结合页面属性(pageproperties.java类)即可实现效果。

当然,这也是因为个人学习,倾向于多用点东西。

希望本文所述对大家jsp程序设计有所帮助。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值