看到項目代碼中有一個自定義的tag標簽,想起以前自己寫過的標簽,竟然忘記的差不多了,手一癢,自己寫個簡單的tag標簽,回顧一下歷史知識
首先建一個servlet工程,然后寫個index.jsp,項目跑起來,正常后,開始寫標簽
工程結構:
這估計算是最簡單的工程結構了,什么東西都不要改,只加個commons.tld文件和處理這個標簽的PageUtils.java類,而且簡單的都不要在web.xml里加任何配置就可以運行,真是方便的很啊
直接看commons.tld文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
? PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
? "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
??? <tlib-version>2.0</tlib-version>
??? <jsp-version>1.2</jsp-version>
??? <short-name>common</short-name>
??? <uri>http://javass.cn/common/</uri>
??? <display-name>Common Tag</display-name>
??? <description>Common Tag library</description>??? <tag>
??????? <name>page</name>
??????? <tag-class>com.wxw.common.tld.PageUtils</tag-class>
??????? <attribute>
??????????? <name>url</name>
??????????? <required>true</required>
??????????? <rtexprvalue>true</rtexprvalue>
??????? </attribute>
??? </tag>
</taglib>
然后就是PageUtils.java文件
?
package com.wxw.common.tld;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;public class PageUtils extends TagSupport {
??? /**
???? *
???? */
??? private static final long serialVersionUID = 1L;
???
??? private String url = null;??? @Override
??? public int doStartTag() throws JspException {
??????? JspWriter out = pageContext.getOut();
??????? try {
??????????? out.print("<a href='http://www.baidu.com'>"+url+"</a>");
??????? } catch (IOException e) {
??????????? e.printStackTrace();
??????? }
??????? return super.doStartTag();
??? }??? public String getUrl() {
??????? return url;
??? }??? public void setUrl(String url) {
??????? this.url = url;
??? }
???
???
}
?
代碼簡單的很,在jsp中調用的情況是:
<%@ page language="java" contentType="text/html; charset=utf-8"
??? pageEncoding="utf-8"%>
<%@ taglib prefix="common" uri="http://javass.cn/common/" %>
<!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">
<title>Insert title here</title>
</head>
<body>
??? this is index.jsp
??? <form action="index.jsp" method="post">
??????? <input name="test1" type="text">
??????? <input name="test2" type="text">
??????? <input type="submit" value="提交">
??? </form>
??? <common:page url="我了個去"></common:page>
</body>
</html>
?
結果就是:
?
代碼簡單明了,仔細看就明白了,我也只是做個代碼記錄,省的以后到處找。如果想深入的化,這塊還是有點難度的,如果想寫個page標簽,還是需要一定的前后臺功底,這里如果以后用到了,就在后面加上,暫時項目里沒用tag標簽寫代碼的情況,以前項目里用過,那倒也都是簡單的數據訪問。