自定义MVC框架(分页前台部分)
来源:互联网 发布:华帝 方太 老板知乎 编辑:程序博客网 时间:2024/06/07 09:47
哈喽大家好!上次跟大家分享了分页的一个案列
那个是属于后台的 今天跟大家补充分页的前台部分
首先给大家看一下方法调用的代码
这个是写在继承玩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}"/>
好了~今天的分享就到这里了
记住我是个可爱的小丸纸的,该文章希望大神指点指点!
在这里虚心讨教~
- 自定义MVC框架(分页前台部分)
- 自定义MVC框架(是一个分页案列 )
- mvc 前台 分页 更新数据
- MVC实现自定义分页
- ASP.NET MVC框架(第一部分)
- ASP.NET MVC框架(第一部分)
- ASP.NET MVC框架(第一部分)
- ASP.NET MVC框架(第一部分)
- Web开发——获取查询内容(内容分页显示)【前台页面部分】
- 自定义MVC框架(一)反射机制
- 自定义MVC框架(最基础的)
- 自定义mvc框架(基础版)
- 自定义MVC框架
- 自定义MVC框架
- 自定义MVC框架编写
- 自定义MVC框架
- MVC框架自定义验证
- 自定义mvc框架
- Imatest 测CCM系数的方法
- Mean Average Precise理解及源码分析
- 元素外边距合并产生问题
- TopN算法
- POJ
- 自定义MVC框架(分页前台部分)
- bzoj 4423: [AMPPZ2013]Bytehattan 并查集
- 扫盲系列—正向代理和反向代理
- 利用MOS管和稳压二极管来做保护电路
- ios-UIGesture扩展手势
- React Component 的生命周期 API
- 数组迭代器(一)-《数据结构预算法》
- gcc -fPIC 选项
- face++人脸识别接口实现原理(一)