要修改的地方分为三处:Pager.java,Action,jsp

Pager.java

是用来存储各种页面属性以及定义输出到页面的分页样式的。

Action

则是将数据库里面的数据查询出来,然后将其传输到页面,当然还有Pager.java里面的输出样式也在这里面传输到页面。

jsp

取出数据显示


viewSource

pager.java

/**
* @author Atlas Email:generationrent@gmail.com
*
*/
public class Pager {
private int current;// 当前记录的位置
private int size; // 数据总记录
private int length;// 每页显示的记录条数
private String url;// URL 调用Action里分页请求的URL
private String pageHeader;// 导航条前文字
public Pager(int offset, int size, int length,String url, String pageHeader) {
this.current = offset;
this.size = size;
this.length = length;
this.url = url;
this.pageHeader = pageHeader;
}
public int getOffset() {
return current;
}
public void setOffset(int offset) {
this.current = offset;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPageHeader() {
return pageHeader;
}
public void setPageHeader(String pageHeader) {
this.pageHeader = pageHeader;
}
/**
* 返回分页导航条
*
*/
public String getPageNavigation() {
String pageNavigation = "";

if (size > length) {
String pref; // 前缀
if (url.indexOf("?") > -1) {

pref = "&";
} else {

pref = "?";
}

if (pageHeader != null && pageHeader.length() > 0) {
pageNavigation = pageHeader + " : ";
}
// 包含“<<”(第一页)和“<”(前一页)
if (current > 0) {
pageNavigation += "<a href='" + url + pref
+ "current=0'>[首页]</a>\n" + "<a href='" + url + pref
+ "current=" + (current - length) + "'>[<]</a>\n";
}
// 导航条中,排头的那一页的current值
int startOffset;

int radius = Constants.MAX_PAGE_INDEX / 2 * length;

if (current < radius
|| this.pageCount() <= Constants.MAX_PAGE_INDEX) {

startOffset = 0;
} else if (current < size - radius) {
startOffset = current - radius;
} else {
startOffset = (size / length - Constants.MAX_PAGE_INDEX)
* length;
}
for (int i = startOffset; i < size
&& i < startOffset + Constants.MAX_PAGE_INDEX * length; i += length) {
if (i == current) {
// 当前页号,加粗显示
pageNavigation += "<b>" + (i / length + 1) + "</b>\n";
} else {

pageNavigation += "<a href='" + url + pref + "current=" + i
+ "'>" + (i / length + 1) + "</a>\n";
}
}
//(下一页)和“>>”(最后一页)
if (current < size - length) {
pageNavigation += "<a href='" + url + pref + "current="
+ (current + length) + "'>[>]</a>\n" + "<a href='"
+ url + pref + "current=" + lastPageOffset()
+ "'>[尾页]</a>\n";
}

return pageNavigation;
}

else {
return "";
}
//return "";
}
/**
* 返回分页后的总页数
*

*/
public int pageCount() {
int pagecount = 0;
if (size % length == 0) {
pagecount = size / length;
} else {
pagecount = size / length + 1;
}
return pagecount;
}
/**
* 返回最后一页的起始记录位置

*/
public int lastPageOffset() {
return size - lastPageSize();
}
/**
* 返回最后一页的记录数

*/
public int lastPageSize() {
int lastpagesize = 0;
if (size % length == 0) {
lastpagesize = length;
} else {
lastpagesize = size % length;
}
return lastpagesize;
}
}


action

/**
* 用户基本信息管理 控制器
*
* @author Atlas Email:generationrent@gmail.com * */@Controller@Scope(value = "protoType")@Action(value = "userbaseAction", results = {@Result(name = "success", location = "/jsp/user.jsp") })public class UserBaseInfoMangeAction extends ActionSupport implementsServletRequestAware
{private int current;// 起始记录的位置/** * @return the current */public int getCurrent() {return current;}/** * @param current * the current to set */public void setCurrent(int current) {this.current = current;}// 获得requestprivate HttpServletRequest request;// inject
beanprivate UserBase userbase;/** * @return the userbase */public UserBase getUserbase() {return userbase;}/** * @param userbase * the userbase to set */public void setUserbase(UserBase userbase) {this.userbase = userbase;}/** * */private static final long
serialVersionUID = 1L;/** * 注入 service */@ResourceUserBaseService userbaseService;public void setServletRequest(HttpServletRequest request) {this.request = request;}/** * 查询所有 * * @return */public String query() {// pagination beginfinal int offset = this.getCurrent();final
int pagesize = Constants.PAGE_SIZE;// pagination end// 获得所有用户信息List<UserBase> list = this.userbaseService.queryUserBaseInfos(offset,pagesize);final int size = this.userbaseService.getRsUserBaseCount();//请求地址final String url =Constants.QUERY_PATH;Pager p =
new Pager(offset, size, pagesize, url, "");request.setAttribute("pager", p);request.setAttribute("userbaseInfosList", list);return SUCCESS;}
Conastants.java
/**
* @author Atlas Email:Generationrent@gmail.com
*
*/
public class Constants {
/**
* 页面显示的数字 最大到10 1...10
*/
public static int MAX_PAGE_INDEX = 10;

/**
* 每页的记录数
*/
public static int PAGE_SIZE = 10;
/**
* 分页 查询地址
*/
public static String QUERY_PATH = "http://127.0.0.1:8088/alllig/userbaseAction!query";
}
Dao
@Repository
public class UserBaseDaoImpl implements UserBaseDao {
/*
* (non-Javadoc)
*
* @see com.travelsky.ism.dao.UserBaseDao#queryUserBaseInfos()
*/
@Override
public List<UserBase> queryUserBaseInfos(int offset, int length) {
List<UserBase> infoList = null;
EntityManager em = null;
try {
em = JpaUtil.getEntityManger();
final String jpaQl = "select userbase from UserBase userbase";
Query q = em.createQuery(jpaQl);
// 设置起始记录数
q.setFirstResult(offset);
// 查询多少条记录
q.setMaxResults(length);
// 获得结果集
infoList = q.getResultList();
for (int i = 0; i < infoList.size(); i++) {
System.out.println(infoList.get(i).getUsername());
}
} finally {
if (null != em) {
em.close();
}
}
return infoList;
}
@Override
public int getRsUserBaseCount() {
Number count = 0;
EntityManager em = null;
try {
final JpaTemplate jpaTemplate = new JpaTemplate(
Persistence.createEntityManagerFactory("jpaname"));
// 获得记录条数
String COUNT_ALL = "select count(*) from UserBase";
count = (Number) jpaTemplate.find(COUNT_ALL).get(0);
} finally {
if (null != em) {
em.close();
}
}
return count.intValue();
}
}
jsp
<%@ page import="com.travelsky.ism.util.Pager"%>
<s:iterator var="pager">
<jsp:useBean id="pager" type="com.travelsky.ism.util.Pager" scope="request" />
<jsp:getProperty name="pager" property="pageNavigation" />查询结果<p>
<br /> 共有记录<jsp:getProperty name="pager" property="size" />条
<br /> 每页有<jsp:getProperty name="pager" property="length" />条记录
<br />
</s:iterator>