哈喽大家好!上次跟大家分享了分页的一个案列
那个是属于后台的 今天跟大家补充分页的前台部分
首先给大家看一下方法调用的代码
这个是写在继承玩action抽象类里面的
public String list(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//实例化pageBean对象
PageBean pageBean=new PageBean();
//并且进行初始化
pageBean.setRequest(request);
//设置每页显示的页数
pageBean.setPsize(4);
List<Book> list = bd.list(b,pageBean);
//保存到作用域中
request.setAttribute("pageBean", pageBean);
request.setAttribute("list", list);
return "list";
}
然后在页面的显示当中我们需要自己写个自定义标签了
自定义标签需要三步:
1、 创建标签助手类
2、创建标签库描述文件
3、自定义标签的使用
第一步的步骤:
代码如下
package tag.ui;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import util.PageBean;
public class PageTag extends BodyTagSupport{
private PageBean pageBean;
public PageBean getPageBean() {
return pageBean;
}
public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}
public PageTag() {
}
@Override
public int doStartTag() throws JspException {
try {
if(null!=pageBean){
String converHTML = converHTML();
this.pageContext.getOut().print(converHTML);
}else{
throw new RuntimeException("没有找到该pageBean对象");
}
return SKIP_BODY;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* pageBean转化为html字符串
* @return String
*/
private String converHTML(){
StringBuffer sf=new StringBuffer();
//3、动态生成js代码
sf.append("<script type='text/javascript'>");
sf.append("function doSkipPage(o){");
sf.append("document.pageBeanForm.pindex.value=o;");
sf.append("document.pageBeanForm.submit();");
sf.append("}");
sf.append("var max="+pageBean.getMaxNumber()+";");
sf.append("function doGotoPage(){");
sf.append("var gotovalue=document.getElementById('goto').value;");
sf.append("if(!gotovalue||isNaN(gotovalue)||parseInt(gotovalue)<=0||parseInt(gotovalue)>max){");
sf.append("alert('只能输入1~N之间的数字!');");
sf.append("document.getElementById('goto').value='';");
sf.append("document.getElementById('goto').focus();");
sf.append("return;");
sf.append("}");
sf.append("doSkipPage(gotovalue);");
sf.append("}");
sf.append("</script>");
//2、动态的生成分页代码
sf.append("<div style='text-align: right;'>");
sf.append("
共" + pageBean.getRows()+"条记录,每页"+pageBean.getPsize()+"条,当前页数:["+pageBean.getPindex()+"/"+pageBean.getMaxNumber()+"]");
sf.append("<a href='javascript:doSkipPage(1)'>首页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getBeforeNumber()+")'>上一页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getNextNumber()+")'>下一页</a>");
sf.append("<a href='javascript:doSkipPage("+pageBean.getMaxNumber()+")'>末页</a>");
sf.append("<input type='text' id='goto' style='width: 30px'><a href='javascript:doGotoPage()'>GO</a>");
sf.append("</div>");
//1、动态的生成form表单
sf.append("<form name='pageBeanForm' action='"+pageBean.getUrl()+"' method='post'>");
sf.append("<input type='hidden' name='pindex' value=''> ");
for(Map.Entry<String, String[]> m : pageBean.getParameterMap().entrySet()){
String name=m.getKey();
String[] values=m.getValue();
if("pindex".equals(name)){
continue;
}
for(String value:values){
sf.append("<input type='hidden' name='"+name+"' value='"+value+"'>");
}
}
sf.append("</form>");
return sf.toString();
}
}
第三步的步骤:
写完了自定义标签之后,在界面上我们只要导入自定义标签的路径然后进行调用
这样子就在jsp页面两行代码就可以了
<%@taglib prefix="v" uri="/veryedu" %>
<v:page pageBean="${pageBean}"/>
好了~今天的分享就到这里了
记住我是个可爱的小丸纸的,该文章希望大神指点指点!
在这里虚心讨教~