资源描述
struts实现数据库分页的代码及实现步骤.docx
《struts实现数据库分页的代码及实现步骤.docx》由会员分享,可在线阅读,更多相关《struts实现数据库分页的代码及实现步骤.docx(14页珍藏版)》请在冰豆网上搜索。
struts实现数据库分页的代码及实现步骤
Struts2.1实现数据分页
第一步:
先建数据库
数据库中的数据:
第二步:
先建立数据库的连接
数据库连接用的是数据库连接池
packageorg;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.naming.NamingException;
importjavax.sql.DataSource;
publicclassDbPool{
privateConnectionconn;
publicvoidcreateConn()throwsException{
try{
ContextinitContext=newInitialContext();
ContextenvContext=(Context)initContext.lookup("java:
/comp/env");
DataSourceds=(DataSource)envContext.lookup("jdbc/mysql");
conn=ds.getConnection();
System.out.println("数据库连接成功");
}catch(Exceptione){
System.out.println("数据库连接失败");
e.printStackTrace();
}
}
publicConnectiongetConn()throwsException{
if(conn==null){
createConn();
}
returnconn;
}
publicResultSetexecuteQuery(Stringsql)throwsException{
ResultSetrs=null;
if(conn==null){
createConn();
}
try{
Statementst=(Statement)this.conn.createStatement();
rs=st.executeQuery(sql);
}catch(Exceptione){
e.printStackTrace();
}
returnrs;
}
}
然后在
下建一个context.xml用来读取配置信息
xmlversion='1.0'encoding='utf-8'?
>
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:
mysql:
//localhost/user1"
username="root"
password="516146194"
maxActive="50"
maxIdle="20"
maxWait="10000"/>
第三步:
建web工程及文件部署
第四步:
建立相应显示数据库分页显示的jsp页面
Show.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%>
<%@tagliburi="/struts-tags"prefix="s"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'show.jsp'startingpage
--
-->
405px"text-align="center">
全部用户
用户ID | 姓名 | 年龄 | 个人简介 |
---|
iteratorvalue="persons">
propertyvalue="personId"/> | propertyvalue="personName"/> | propertyvalue="personAge"/> | propertyvalue="personInfo"/> |
iterator>
第propertyvalue="pageNumber"/>页|总共propertyvalue="totalPage"/>页
urlid="firstPage"value="allPersons.action">
paramname="pageNumber">1
param>
url>
ahref="%{firstPage}">首页
a>
urlid="prePage"value="allPersons.action">
paramname="pageNumber">1
param>
url>
ahref="%{prePage}">上一页
a>
urlid="nextPage"value="allPersons.action">
paramname="pageNumber"value="pageNumber+1">
param>
url>
ahref="%{nextPage}">下一页
a>
urlid="lastPage"value="allPersons.action">
paramname="pageNumber"value="totalPage">
param>
url>
ahref="%{lastPage}">末页
a>
第五步:
struts2.0的相关配置
1.xml的配置
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
/showPerson.jsp
2.需要的jar包
3.allPersons的action类
packageaction;
importjava.util.List;
importmodel.Person;
importcom.opensymphony.xwork2.ActionSupport;
importdao.PageDao;
publicclassAllPersonsextendsActionSupport{
privateListpersons;
privateintpageNumber=1;//当前页数
privateintpageSize=4;//每页显示的记录数
privateinttotalPage;
//所有的用户对象
publicListgetPersons(){
returnpersons;
}
publicvoidsetPersons(Listpersons){
this.persons=persons;
}
privatePageDaopageDao=newPageDao();
publicintgetPageNumber(){
returnpageNumber;
}
publicvoidsetPageNumber(intpageNumber){
this.pageNumber=pageNumber;
}
publicintgetPageSize(){
returnpageSize;
}
publicvoidsetPageSize(intpageSize){
this.pageSize=pageSize;
}
publicintgetTotalPage(){
returntotalPage;
}
publicvoidsetTotalPage(inttotalPage){
this.totalPage=totalPage;
}
publicStringexecute(){
persons=pageDao.allPersons(pageSize,pageNumber);
totalPage=pageDao.getPersonAmount()/pageSize;
returnSUCCESS;
}
}
4.pageDao的代码:
packagedao;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importjavax.xml.registry.infomodel.PersonName;
importorg.DbPool;
importmodel.Person;
publicclassPageDao{
DbPooldbPool=newDbPool();
privatePersonperson;
PreparedStatementps;
ResultSetrs;
publicListallPersons(intpageSize,intpageNumber){
Listlist=newArrayList();
//Stringsql="select*frompersonlimit?
?
";
try{
//pstmt=this.getConnection().prepareStatement(
//"select*fromstudentorderbystu_idlimit"+(pageNow*pageSize-pageSize)+","+pageSize
//);
if(pageSize>0&&pageNumber>0){
ps=dbPool.getConn().prepareStatement("select*frompersonorderbypersonIdlimit"+(pageNumber*pageSize-pageSize)+","+pageSize);
}
//ps=dbPool.getConn().prepareStatement(
//"select*frompersonorderbypersonIdlimit"+(pageNumber*pageSize-pageSize)+","+pageSize
//);
rs=ps.executeQuery();
while(rs.next()){
person=newPerson();
person.setPersonId(rs.getInt
(1));
person.setPersonName(rs.getString
(2));
person.setPersonAge(rs.getInt(3));
person.setPersonInfo(rs.getString(4));
list.add(person);
}
}catch(Exceptione){
e.printStackTrace();
}
returnlist;
}
publicintgetPersonAmount(){
inti=0;
Stringsql="selectcount(*)fromperson";
PreparedStatementps=null;
try{
ps=dbPool.getConn().prepareStatement(sql);
ResultSetrs=ps.executeQuery();
if(rs.next()){
i=rs.getInt
(1);
}
}catch(Exceptione){
e.printStackTrace();
}
returni;
}
}
5.model包中的person代码:
packagemodel;
publicclassPerson{
privateintpersonId;
privateStringpersonName;
privateStringpersonInfo;
privateintpersonAge;
publicintgetPersonId(){
returnpersonId;
}
publicvoidsetPersonId(intpersonId){
this.personId=personId;
}
publicStringgetPersonName(){
returnpersonName;
}
publicvoidsetPersonName(StringpersonName){
this.personName=personName;
}
publicStringgetPersonInfo(){
returnpersonInfo;
}
publicvoidsetPersonInfo(StringpersonInfo){
this.personInfo=personInfo;
}
publicintgetPersonAge(){
returnpersonAge;
}
publicvoidsetPersonAge(intpersonAge){
this.personAge=personAge;
}
}
最后:
项目运行的效果图:
在ie中输入http:
//localhost:
8080/showPerson/allPersons.action,则显示如下图所示的效果