自定义JSP标签

一、自定义标签的优势
1.可以是java代码和HTMl代码分离
2.标签可以使代码得到复用
3.更好的可维护性。当你需要更改你的逻辑时,不需要去改jsp,只需更改java文件,所有使用此标签的地方都会得到你想要的效果

二、 如何创建一个jsp标签

1.我们需要一个java类,这个java类需要实现javax.servlet.jsp.tagext 中的Tag/BodyTag ,
或者继承TagSupport/BodyTagSupport
SubstrTagHandler.java
package com.taglib;

import java.io.IOException;

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

public class SubstrTagHandler extends TagSupport {
	private String input;
	private int start;
	private int end;

	@Override
	public int doEndTag() throws JspException {
		return super.doEndTag();
	}

	@Override
	public int doStartTag() throws JspException {
		JspWriter out = pageContext.getOut();
		try {
			out.print(input.substring(start, end));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return SKIP_BODY;
	}

	public String getInput() {
		return input;
	}

	public void setInput(String input) {
		this.input = input;
	}

	public int getStart() {
		return start;
	}

	public void setStart(int start) {
		this.start = start;
	}

	public int getEnd() {
		return end;
	}

	public void setEnd(int end) {
		this.end = end;
	}

}


2.在WEB-INF目录下创建一个tld(Tag Library Descriptor)文件用来描述你的标签
SubstrDescriptor.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>Sample taglib for Substr operation</description>
	<tlib-version>1.0</tlib-version>
	<short-name>substr</short-name>
	<uri>http://hellogava.iteye.com/jsp/taglib/substr</uri>

	<tag>
		<description>Substring function.</description>
		<name>substring</name>
		<tag-class>com.taglib.SubstrTagHandler</tag-class>
		<body-content>JSP</body-content>
		<attribute>
			<name>input</name>
			<required>true</required>
		</attribute>
		<attribute>
			<name>start</name>
			<required>true</required>
		</attribute>
		<attribute>
			<name>end</name>
			<required>true</required>
		</attribute>
	</tag>
</taglib>


3.在jsp中引入标签库,然后就可以使用该标签
index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://hellogava.iteye.com/jsp/taglib/substr" prefix="s" %>
<!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=ISO-8859-1">
<title>JSP Custom Taglib example: Substr function</title>
</head>
<body>
	SUBSTR(GOODMORNING, 1, 6) is 
	 <font color="blue"> 
	 <s:substring end="6" input="GOODMORNING" start="1"></s:substring>
	 </font>
</body>
</html>


参考:
http://www.stardeveloper.com/articles/display.html?article=2001081301&page=1

你可能感兴趣的:(jsp)