![](http://hi.csdn.net/attachment/201111/11/0_1320976310ph88.gif)
<tr align="center">
<td align="center">
<%
Pager pagees=(Pager)request.getAttribute("page");
int pn=pagees.getNowPager();//当前页
int pt=pagees.getTotalPage();//总页数
int showNum=5;//所显示
%>
<%
if(pagees.getNowPager()!=1){
%>
<s:a href="userList.action?pageNum=1">首页</s:a>
<s:a href="userList.action?pageNum=%{page.nowPager-1}">上一页</s:a>
<%} %>
<%
if(pn==1&&pt<showNum){//当前页面为第1页面,且总页面小于所显示页面
for(int i=1;i<=pt;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%}}%>
<%
if(pn==1&&pt>=showNum){//当前页面为第1页面,且总页面大于所显示页面
for(int i=1;i<=showNum;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%}}%>
<%
if(pn==pt&&pt<showNum&&pn!=1){//当前页面为最后页面时且总页面小于所显示页数不为1
for(int i=pt-pt+1;i<=pt;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%}} %>
<%
if(pn==pt&&pt>=showNum){//当前页面为最后页面时且总页面大于等于所显示页数时
for(int i=pt-showNum+1;i<=pt;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%}} %>
<%if(pn!=1&&pt!=pn&&pt<showNum){//当前不为首页也不为最后页,且总数小于所显示
for(int i=1;i<=pt;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%} }%>
<%if(pn!=1&&pt!=pn&&pt>=showNum&&pn+showNum/2<=pt&&pn-showNum/2>=1){//当前不为首页也不为最后页,且总数大于等于所显示,且
for(int i=pn-showNum/2;i<=pn+showNum/2;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%} }%>
<%if(pn!=1&&pt!=pn&&pt>=showNum&&pn-showNum/2<1){//当前不为首页也不为最后页,且总数大于等于所显示,左多
for(int i=1;i<=showNum;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%} }%>
<%if(pn!=1&&pt!=pn&&pt>=showNum&&pn+showNum/2>pt){//当前不为首页也不为最后页,且总数大于等于所显示,右多
for(int i=pt-showNum+1;i<=pt;i++){
if(pn==i){
out.print("<span>"+i+"</span>");
}else{
out.print("<a href='userList.action?pageNum="+i+"'>["+i+"]</a>");
}
%>
<%} }%>
<%
if(pagees.getTotalPage()!=1&&pagees.getNowPager()!=pagees.getTotalPage()){
%>
<s:a href="userList.action?pageNum=%{page.nowPager+1}">下一页</s:a>
<s:a href="userList.action?pageNum=%{page.totalPage}">末页</s:a>
<%} %>
${page.nowPager}/${page.totalPage}
<input type="hidden" name="pageNum" value="" id="hiddenPageNum"/>
</td>
</tr>
</table>
我这里是用到的SSH框架写的,后台的Pager和查询数据的代码我就没有贴出来了,要是觉得有用自己写一下吧,也不是很难,做了下小测试,跟百度的分页效果一样