通用分页2

通用分页代码

通用分页02

		public class PageTag extends BodyTagSupport{
		
			private static final long serialVersionUID = 1L;
			private PageBean pageBean;
			//封装
			public PageBean getPageBean() {
				return pageBean;
			}
			public void setPageBean(PageBean pageBean) {
				this.pageBean = pageBean;
			}
			
			@Override
			public int doStartTag() throws JspException {
				// TODO Auto-generated method stub
				try {
					JspWriter out=this.pageContext.getOut();
					out.println(toHtml());
					return SKIP_BODY;
				} catch (Exception e) {
					// TODO: handle exception
					throw new RuntimeException(e);
				}
			}
			
			
			private String toHtml() {
				// TODO Auto-generated method stub
				StringBuffer sb=new StringBuffer();
				//防止pageBean空指针异常
				if(null==pageBean||!pageBean.isPagination()) {
					return sb.toString();
				}
				
				//这里拼接分页按钮
				sb.append("<div style='text-align: center;font-size=20px;'>\r\n" + 
						" 		当前第"+pageBean.getPage()+"页&nbsp;&nbsp;共"+pageBean.getMaxPage()+"页&nbsp;&nbsp;共"+pageBean.getTotal()+"条&nbsp;&nbsp;\r\n" + 
						" 		<a href='javascript:doForward(1)'>首页&nbsp;&nbsp;</a>\r\n" + 
						" 		<a href='javascript:doForward("+pageBean.getPreviousPage()+")'>上一页&nbsp;&nbsp;</a>\r\n" + 
						" 		<a href='javascript:doForward("+pageBean.getNextPage()+")'>下一页&nbsp;&nbsp;</a>\r\n" + 
						" 		<a href='javascript:doForward("+pageBean.getMaxPage()+")'>尾页&nbsp;&nbsp;</a>\r\n" + 
						" 		<input id='numText' type='text' style='width:50px'/>\r\n" + 
						" 		<a href='javascript:doSkip()'>GO</a>\r\n" + 
						" 	</div>");
				//分页隐藏域表单 专门用来传递数据
				sb.append("<form id='pageForm' action='"+this.pageBean.getUrl()+"' method='post'>");
				sb.append("<input type='hidden' name='page' />");
				//从map集合中获取参数
				Map<String, String[]> parameterMap=pageBean.getParameterMap();
				//遍历集合
				for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
					String name=entry.getKey();
					String[] value=entry.getValue();
					if("page".equals(name)) {//将上一次的页码抛掉
						continue;//退出当前循环,进入下一个循环
					}
					//遍历数组
					for (int i = 0; i < value.length; i++) {
						sb.append("<input type='hidden' name='"+name+"' value='"+value[i]+"'/>");
					}
				}
				sb.append("</form>");
				//这里动态拼接js
				sb.append(" <script type='text/javascript'>\r\n" + 
						"	function doForward(page){\r\n" + 
						"		var f=document.getElementById('pageForm');\r\n" + 
						"		f.page.value=page;\r\n" + 
						"		f.submit();\r\n" + 
						"	}\r\n" + 
						"	function doSkip(){\r\n" + 
						"		var num=document.getElementById('numText').value;\r\n" + 
						"		if(!num||isNaN(num)||!/^[0-9]+$/.test(num)||parseInt(num)<=0||parseInt(num)>"+pageBean.getMaxPage()+"){\r\n" + 
						"			alert('请输入1~"+pageBean.getMaxPage()+"之间的整数');\r\n" + 
						"		}\r\n" + 
						"		doForward(num);\r\n" + 
						"	}\r\n" + 
						"</script>");
				
				return sb.toString();
			}
		}

2、创建标签代码

		<!DOCTYPE taglib
		  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
		   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
		<!-- 标签库描述符 -->
		<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
			<tlib-version>1.0</tlib-version>
			<jsp-version>1.2</jsp-version>
			<short-name>Simple Tags</short-name>
			<!-- 这里放jsp界面taglib命令调用的路径 -->
			<uri>/wangjuanxia</uri>
			<tag>
				<!-- 标签名 -->
				<name>page</name>
				<!-- 标签助手类的路径 -->
				<tag-class>com.wangjuanxia.tag.PageTag</tag-class>
				<!-- 标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 -->
				<body-content>empty</body-content>
				<!-- 自定义标签的属性定义,请注意一定要在标签类中提供对应的get/set方法 -->
				<attribute>
					<!-- 自定义标签的属性名称 -->
					<name>pageBean</name>
					<!-- true表示必填 -->
					<required>true</required>
					<!-- true支持动态值,可以向值里面填jsp表达式、EL表达式,false则不支持 -->
					<rtexprvalue>true</rtexprvalue>
					<description></description><!-- 属性的描述,可有可无,要放在属性的最后 -->
				</attribute>
			</tag>
		</taglib>

重点:.tld文件必须保存到WEB-INF目录或其子目录下

.jsp界面代码

调用c标签写一个ui标签用来显示表的数据

	<%@ page language="java" contentType="text/html; charset=utf-8"
	    pageEncoding="utf-8"%>
	    <!-- taglib指令导入标签描述文件 -->
	    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
		<%@taglib prefix="z" uri="/wangjuanxia" %>
	
	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
	<html>
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Insert title here</title>
	
	</head>
	<body>
		 <!-- 判断结果集是否有值 -->
	 	<c:if test="${empty joblist }">
	 		<jsp:forward page="jobServlet.action"></jsp:forward>
	 	</c:if>
	 	<table border="1px" width="100%"> 
	 		<tr>
	 		
	 		 	<td>id</td>
	 		 	<td>job</td>
	 		 	<td>company</td>
	 		 	<td>address</td>
	 		 	<td>salary</td>
	 		 	<td>url</td>
	 		 	<td>limit</td>
	 		 	<td>time</td>
	 		 	<td>desc</td>
	 		 	<td>jobHandle</td>
	 		 	<td>addressHandle</td>
	 		</tr>
	 		 <!-- 遍历 -->
	 		<c:forEach items="${joblist}" var="j" >
	 		<tr>
	 		 	<td>${j.id }</td>
	 		 	<td>${j.job }</td>
	 		 	<td>${j.company }</td>
	 		 	<td>${j.address }</td>
	 		 	<td>${j.salary }</td>
	 		 	<td>${j.url }</td>
	 		 	<td>${j.limit }</td>
	 		 	<td>${j.time }</td>
	 		 	<td>${j.desc }</td>
	 		 	<td>${j.jobHandle }</td>
	 		 	<td>${j.addressHandle }</td>
	 		</tr>
	 		</c:forEach>
	 	</table>
	 
	 	<z:page pageBean="${pageBean }"/>
	 	
	</body>
	</html>

总结:懂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值