`
zhouxianglh
  • 浏览: 267431 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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>
 

 

分享到:
评论

相关推荐

    JSTL自定义标签实例解析

    **JSTL自定义标签实例解析** JavaServer Pages Standard Tag Library (JSTL) 是一套标准的标签库,用于简化JSP开发。JSTL允许开发者使用预定义的标签来处理常见任务,如迭代、条件判断、XML处理等。本文将深入讲解...

    jstl 自定义标签

    JSTL自定义标签允许开发者扩展标准标签库的功能,满足特定需求。自定义标签由三部分组成:标签库描述符(TLD),标签处理类(Tag Handler Class)以及标签体(Tag Body)。 1. **标签库描述符(TLD)**:这是一个XML...

    jstl自定义标签,自定义EL表达式

    这次整理自定义标签主要是项目的需要,要将一些写死的url信息配置于配置文件中,这样发版的时候改动起来相当方便

    JSTL 以及自定义标签开发相关

    JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...

    这个压缩包里有JSTL自定义标签开发实例的源码及相关文件

    在这个压缩包中,包含的是关于JSTL自定义标签的开发实例源码,对于正在学习JavaWeb技术的开发者来说,这是一个非常有价值的参考资料。 首先,我们要理解JSTL的基本概念。JSTL主要由五个核心部分组成:Core、XML、...

    jstl自定义标签和函数思维导图

    jstl自定义标签和函数思维导图

    JSTL 开发自定义标签使用的jar

    在这个场景中,我们重点关注的是JSTL的核心标签库以及如何使用自定义标签。 `jstl.jar`是JSTL的核心库,包含了实现JSTL标准标签功能的类和接口。它提供了控制流标签(如if、choose、when、otherwise)、迭代标签...

    jstl自定义标签

    **JSTL自定义标签**是JavaServer Pages Standard Tag Library(JSTL)的一个扩展功能,允许开发者创建自己的标签库来增强页面逻辑和表现。JSTL是一个标准的标签库,它提供了处理常见JSP任务的标签,如迭代、条件语句...

    jsp自定义标签-比较强大的

    jsp、jstl自定义标签实现的分页,实现的还是比较好的,没有在request、session等范围保存过数据,在pageContext范围内保存过集合的数据, 实现的方法还是比较简单的,适用性还是比较广的,我是实在是没分了,平时也...

    EL、JSTL、自定义标签、过滤器的ppt

    EL、JSTL、自定义标签、过滤器的ppt

    JSTL JSP 自定义标签 分页

    jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...

    自定义JSTL标签java项目文件

    4. **在JSP页面中使用自定义标签**:完成以上步骤后,就可以在JSP页面中像使用标准JSTL标签一样使用自定义标签了。 例如,假设我们有一个名为`myTag`的自定义标签,其处理类为`com.example.MyTag`,在TLD文件中定义...

    JavaWeb-12:自定义标签库开发&JSTL标签库

    在JavaWeb开发中,自定义标签库和JSTL(JavaServer Pages Standard Tag Library)是两个重要的组件,它们极大地提高了代码的可读性和可维护性。本教程将深入探讨这两个主题,帮助开发者更好地理解和应用它们。 一、...

    jsp 自定义标签的使用

    JSTL中的某些标签功能可能与自定义标签重复,但在实际开发中,两者常常结合使用,互补不足。例如,自定义标签可以处理特定业务逻辑,而JSTL则负责通用的控制流、迭代和I/O操作。 总结,通过自定义标签,我们可以...

    jsp2.0 自定义标签和自定标签函数

    在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...

    JSTL自定义EL表达式

    在Java Web开发中,JSTL(JavaServer Pages Standard Tag Library)是一个标准的标签库,它提供了一系列的标签来简化JSP页面中的编程工作。EL(Expression Language)是JSP 2.0引入的一种轻量级的脚本语言,用于在...

    自定义标签,标签实例,ppt

    自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP页面更加简洁。本篇文章将深入探讨自定义标签的概念、工作原理以及如何创建和使用它们。 一、自定义标签概述 自定义标签可以...

    jstl自定义函数[文].pdf

    下面我们将详细探讨JSTL自定义函数的开发步骤、使用方法以及JSTL提供的标准函数。 首先,开发自定义函数主要分为以下几步: 1. **创建Java类**:你需要定义一个Java类,该类包含你需要在EL表达式中调用的静态方法...

    JAVAEE自定义标签的使用

    自定义标签是JSP(JavaServer Pages)的一部分,通过扩展JSP标准标签库(JSTL),我们可以根据项目需求定制自己的功能标签。 首先,理解自定义标签的工作原理。自定义标签是XML样式的标签,它们在JSP页面中以`...

Global site tag (gtag.js) - Google Analytics