分页插件开发(1)--jstl自定义标签
2015-11-01 18:19
716 查看
平时的开发中分页应该算是非常常用的功能了,以前用的基本都是js来控制页面效果,不过总觉得js有点散乱,所以这次使用jstl的自定义标签功能封装一个分页插件。
一、自定义标签库
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<description>mytag tags</description>
<tlib-version>1.0</tlib-version>
<short-name>mytag</short-name>
<tag>
<name>test</name>
<tag-class>com.lxg.tag.MyTags</tag-class>
<body-content>empty</body-content>
<attribute>
<name>pageNo</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
新建一个xxx.tld文件,定义一个名为test的标签,设置其对应的java类的路径,设置标签的属性。
二、建立对应的java类进行解析xxx.tld标签库
package com.lxg.tag;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author lxg
*
* 2015年10月21日下午9:49:50
*/
public class MyTags extends TagSupport {
private String pageNo;
public int doEndTag() throws JspException {
StringBuffer sb = new StringBuffer("<div>");
sb.append(pageNo);
sb.append("</div>");
JspWriter writer = pageContext.getOut();
try {
writer.println(new String(sb.toString().getBytes()));
} catch (Exception e) {
throw new JspException(e.getMessage());
}
return EVAL_PAGE;
}
public int doStartTag() throws JspException {
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String key = en.nextElement().toString();
pageNo = request.getParameter(key);
}
return SKIP_BODY;
}
public String getPageNo() {
return pageNo;
}
public void setPageNo(String pageNo) {
this.pageNo = pageNo;
}
}
建立的类需继承TagSupport,重写doEndTag和doStartTag两个方法。定义一个与标签名相同的变量,实现get和set方法。
在doEndTag方法中可以向外输出一个字符串,字符串的内容就是自定义的标签被解析后转换成的对应的html标签。
三、页面中的引用
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>
<!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">
<link type="text/css" rel="stylesheet" href="css/button.css">
<title>Insert title here</title>
</head>
<body>
<mytag:test pageNo="111" />
</body>
</html>
首先在页面中引入我们自定义的标签库
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>
然后使用这个标签,并设置其属性值。
<mytag:test pageNo="111"/>
页面效果:
![](https://img-blog.csdn.net/20151101181527498?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里实现的就是读取到自定义标签的属性值,并把它显示到页面中。
下一篇文章中我们来实现分页的页面效果。
项目源码:https://github.com/li5454yong/MyTagLib.git
一、自定义标签库
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
<description>mytag tags</description>
<tlib-version>1.0</tlib-version>
<short-name>mytag</short-name>
<tag>
<name>test</name>
<tag-class>com.lxg.tag.MyTags</tag-class>
<body-content>empty</body-content>
<attribute>
<name>pageNo</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
新建一个xxx.tld文件,定义一个名为test的标签,设置其对应的java类的路径,设置标签的属性。
二、建立对应的java类进行解析xxx.tld标签库
package com.lxg.tag;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @author lxg
*
* 2015年10月21日下午9:49:50
*/
public class MyTags extends TagSupport {
private String pageNo;
public int doEndTag() throws JspException {
StringBuffer sb = new StringBuffer("<div>");
sb.append(pageNo);
sb.append("</div>");
JspWriter writer = pageContext.getOut();
try {
writer.println(new String(sb.toString().getBytes()));
} catch (Exception e) {
throw new JspException(e.getMessage());
}
return EVAL_PAGE;
}
public int doStartTag() throws JspException {
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
Enumeration en = request.getParameterNames();
while (en.hasMoreElements()) {
String key = en.nextElement().toString();
pageNo = request.getParameter(key);
}
return SKIP_BODY;
}
public String getPageNo() {
return pageNo;
}
public void setPageNo(String pageNo) {
this.pageNo = pageNo;
}
}
建立的类需继承TagSupport,重写doEndTag和doStartTag两个方法。定义一个与标签名相同的变量,实现get和set方法。
在doEndTag方法中可以向外输出一个字符串,字符串的内容就是自定义的标签被解析后转换成的对应的html标签。
三、页面中的引用
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>
<!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">
<link type="text/css" rel="stylesheet" href="css/button.css">
<title>Insert title here</title>
</head>
<body>
<mytag:test pageNo="111" />
</body>
</html>
首先在页面中引入我们自定义的标签库
<%@taglib uri="/WEB-INF/tld/myTag.tld" prefix="mytag" %>
然后使用这个标签,并设置其属性值。
<mytag:test pageNo="111"/>
页面效果:
这里实现的就是读取到自定义标签的属性值,并把它显示到页面中。
下一篇文章中我们来实现分页的页面效果。
项目源码:https://github.com/li5454yong/MyTagLib.git
相关文章推荐
- Javascript监督学习
- JavaScript作用域问题:预解析、全局与局部作用域解析、作用域链
- JS——构造函数的三种方法
- JS-中查询页面开始日期和结束日期选择 检查合法性
- extjs grid 分页
- javascript做导航条
- JavaScript设计模式 Item 2 -- 接口的实现
- []==[] 和 []==![]
- javascript模板-ICanHaz.js
- JSONP跨域
- js的sort函数的api写的太水了
- QuoJS 中文文档
- 总结了下json的遍历
- JS过去某个时间到现在天数
- js面向对象
- js页面间传值
- JS遍历被选中input的值
- JS倒计时
- JS的attr属性关联
- JS遍历