JSTL 自定义标签

JSTL自定义标签:

1  jstl类创建

package com.kic.test;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

/**
 * JSTL的学习
 */
public class PageTag extends TagSupport {
	private static final long serialVersionUID = 4576929406613968767L;
	private int totalMessage;//总信息数
	private int nowPage;//当前页
	private int pageSize;//每页显示信息数
	private String url;//url
	private String target;//目标窗口
	private String parameterName;//参数名称

	public int getTotalMessage() {
		return totalMessage;
	}

	public void setTotalMessage(int totalMessage) {
		this.totalMessage = totalMessage;
	}

	public int getNowPage() {
		return nowPage;
	}

	public void setNowPage(int nowPage) {
		this.nowPage = nowPage;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getTarget() {
		return target;
	}

	public void setTarget(String target) {
		this.target = target;
	}

	public String getParameterName() {
		return parameterName;
	}

	public void setParameterName(String parameterName) {
		this.parameterName = parameterName;
	}

	@Override
	public int doStartTag() throws JspException {
		String html = null;
		if (totalMessage != 0) {
			html = getHTML();
		} else {
			html = "暂无分页信息";
		}
		try {
			this.pageContext.getOut().print(html);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return super.doStartTag();
	}

	/**
	 * 获取HTML代码
	 * 
	 * @return
	 */
	private String getHTML() {
		StringBuffer result = new StringBuffer();
		nowPage = nowPage == 0 ? 1 : nowPage;//默认显示第1页
		int totalPage = totalMessage / pageSize;//总页数
		if (totalMessage % pageSize != 0) {
			totalPage++;
		}
		String param = (url.contains("?") ? "&" : "?") + parameterName + "=";//获取URL
		//首页
		result.append("<a href=\"");
		result.append(url);
		result.append(param);
		result.append("1");
		if (null != target) {
			result.append("target=\"");
		}
		result.append("\">首页</a>");
		//上一页
		if (nowPage == 1) {
			result.append("\\上一页");
		} else {
			result.append("\\<a href=\"");
			result.append(url);
			result.append(param);
			result.append(nowPage - 1);
			if (null != target) {
				result.append("target=\"");
			}
			result.append("\">上一页</a>");
		}
		//下一页
		if (nowPage == totalPage) {
			result.append("\\下一页");
		} else {
			result.append("\\<a href=\"");
			result.append(url);
			result.append(param);
			result.append(nowPage + 1);
			if (null != target) {
				result.append("target=\"");
			}
			result.append("\">下一页</a>");
		}
		//尾页
		result.append("\\<a href=\"");
		result.append(url);
		result.append(param);
		result.append(totalPage);
		if (null != target) {
			result.append("target=\"");
		}
		result.append("\">尾页</a>");
		return result.toString();
	}
}

 2 WEB-INF下tld 文件创建

<?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>JSTL 1.1 core library</description>
	<display-name>Test tag</display-name>
	<tlib-version>2.0</tlib-version>
	<short-name>test</short-name>
	<uri>http://zhouxianglh.iteye.com</uri>
	<tag>
		<description>分页标签</description>
		<name>page</name>
		<tag-class>com.kic.test.PageTag</tag-class>
		<body-content>JSP</body-content>
		<attribute>
			<description>总信息数</description>
			<name>totalMessage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>int</type>
		</attribute>
		<attribute>
			<description>当前页</description>
			<name>nowPage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>int</type>
		</attribute>
		<attribute>
			<description>每页显示信息数</description>
			<name>pageSize</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>int</type>
		</attribute>
		<attribute>
			<description>链接</description>
			<name>url</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>String</type>
		</attribute>
		<attribute>
			<description>当前页参数名称</description>
			<name>parameterName</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>String</type>
		</attribute>
		<attribute>
			<description>目标窗口</description>
			<name>target</name>
			<rtexprvalue>true</rtexprvalue>
			<type>String</type>
		</attribute>
	</tag>
</taglib>

 3 web.xml中注册

<!-- 设置tld文件路径 -->
	<jsp-config>
		<taglib>
			<taglib-uri>/testPage</taglib-uri>
			<taglib-location>/WEB-INF/test.tld</taglib-location>
		</taglib>
	</jsp-config>

 4 jsp页面使用

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="test" uri="/testPage"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>JSTL学习</title>
	</head>
	<body>
		<!-- 分页标签使用 -->
		<test:page pageSize="${pageSize}" parameterName="nowPage" totalMessage="${totalMessage}" url="page.action" nowPage="${nowPage}" />
	</body>
</html>
 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值