哈嘍大家好!上次跟大家分享了分頁的一個案列
那個是屬於後臺的 今天跟大家補充分頁的前臺部分
首先給大家看一下方法調用的代碼
這個是寫在繼承玩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}"/>
好了~今天的分享就到這裏了
記住我是個可愛的小丸紙的,該文章希望大神指點指點!
在這裏虛心討教~