自定义mvc中的自定义标签与通用分页

自定义标签

  1. 自定义标签生命周期
    在这里插入图片描述
    SKIP_BODY:跳过主体
    EVAL_BODY_INCLUDE:计算标签主体内容并[输出]
    EVAL_PAGE:计算页面的后续部分
    SKIP_PAGE:跳过页面的后续部分
    EVAL_BODY_AGAIN:再计算主体一次

2.1 创建一个标签助手类(继承BodyTagSupport),运行到自定义标签的时候实 例化标签助手类, 标签属性必须助手类的属性对应、且要提供对应get/set方法
在这里插入图片描述

2.2 在JSP通过taglib指令导入标签库描述文件.
在这里插入图片描述

2.3 配置好dld文件,标签库.创建标签库描述文件(tld),添加自定义标签的配置
注意点:tld文件必须保存到WEB-INF目录或其子目录
在这里插入图片描述

通用分页

  1. 定义好分页需要的属性: pagination=true;开启分页
    在这里插入图片描述

3.1 分页助手类:PageTag

定义page的属性:
请求的参数:
private Map<String, String[]> parameterMap;
req.getParameterMap();
请求的地址:PageBean 的请求路径url.
private String url;
req.getContextPath()+req.getServletPath();

package com.hong.mvc.test.tag;

import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import com.hong.mvc.test.util.PageBean;

public class PageTag extends BodyTagSupport{

	
	private static final long serialVersionUID = 1L;
	
	//定义pageBean数属性
	private PageBean pageBean;

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	
	public PageTag() {}
	
	@Override
	public int doStartTag() throws JspException {
		// TODO Auto-generated method stub
		JspWriter out = pageContext.getOut();
		try {
			out.println(toHtml());
		} catch (IOException e) {
			throw new RuntimeException(e);
		}
		return SKIP_BODY;
	}

	public String toHtml() {
		StringBuffer bf=new StringBuffer();
		//生产分页按钮
		bf.append("当前第:"+this.pageBean.getPage()+"页    共"+this.pageBean.getMaxPage()+"页  共"+this.pageBean.getTotal()+"条&nbsp;&nbsp;");
		bf.append("<a href='javascript:doForward(1)'>首页</a>");
		bf.append("<a href='javascript:doForward("+this.pageBean.getFrontPage()+")'>&nbsp;&nbsp;上一页</a>");
		bf.append("<a href='javascript:doForward("+this.pageBean.getNextPage()+")'>&nbsp;&nbsp;下一页</a>");
		bf.append("<a href='javascript:doForward("+this.pageBean.getMaxPage()+")'>&nbsp;&nbsp;末页</a>");
		bf.append("<input type='text' id='gotoPage' style='width: 30px'><a href='javascript:gotoPage()'>确定</a>");
		//生成分页的表单
		bf.append("<form id='form' action='"+this.pageBean.getUrl()+"' method='post'>");
		bf.append("<input id='page' type='hidden' name='page' />");
		Map<String, String[]> parameterMap=pageBean.getParameterMap();
		Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();
		for (Entry<String, String[]> entry : entrySet) {
			String name=entry.getKey();
			String values[]=entry.getValue();
			if(name.equals("page")) {
				continue;
			}
			for(String value : values) {
				bf.append("<input  type='hidden' name='"+name+"' value='"+value+"'/>");
			}
		}
		bf.append("</form>");
		//js
				bf.append("<script type='text/javascript'>\r\n" + 
						"    function  doForward(page){\r\n" + 
						"    	console.info(page);\r\n" + 
						"    	document.getElementById('page').value=page;\r\n" + 
						"    	document.getElementById('form').submit();\r\n" + 
						"    }\r\n" + 
						"    \r\n" + 
						"    function  gotoPage(){\r\n" + 
						"    var page=document.getElementById('gotoPage').value;\r\n" + 
						"     if(isNaN(page)){\r\n" + 
						"    	 alert(\"请输入一个数字\");\r\n" + 
						"     }else if(page<1 || page>"+this.pageBean.getMaxPage()+"){\r\n" + 
						"    	 alert(\"请输入1-"+this.pageBean.getMaxPage()+"之间的数字\");\r\n" + 
						"     }else{\r\n" + 
						"    	 doForward(page) \r\n" + 
						"     }\r\n" + 
						"    }\r\n" + 
						"    </script> ");
		return bf.toString();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值