JSP自定義標簽的使用簡化版
阿新 • • 發佈:2018-05-13
stl XP inf 不想 ted java add 使用 contex
在jsp中 如果不想頁面中出現java代碼 這個時候就需要使用到jsp的自定義標簽庫技術了
自定義標簽庫 能夠有效的減少jsp中java代碼的出現 使其更加自然的像html頁面一樣
如果要使用jsp自定義標簽庫技術順著下列步驟做個demo就能理解個大概
首先在項目下WEB-INF下創建一個tld文件 用於說明這個自定義標簽庫
然後打開自己曾經導入過的jar包,並且保證該包在現行環境下能夠使用
找到包中的WEB-INF文件可以看到一個c.tld文件 打開此文件
可以看到列如
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>JSTL 1.2 core library</description> <display-name>JSTL core</display-name> <tlib-version>1.2</tlib-version> <short-name>c</short-name> <uri>http://java.sun.com/jsp/jstl/core</uri>
</taglib>
這樣的內容 從頭選到uri的位置截取過來 然後在尾部加上</taglib>
申明 由於各個機子上環境可能不一致 此文件不建議直接從我這裏copy
然後可以看一個實例標簽
<tag> <description> Catches any Throwable that occurs inits body and optionally exposes it. </description> <name>catch</name> <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> <body-content>JSP</body-content> <attribute> <description> Name of the exported scoped variable for the exception thrown from a nested action. The type of the scoped variable is the type of the exception thrown. </description> <name>var</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag>
這是一個完整的標簽中可用的分析
<tag> <!-- 標簽描述--> <description></description> <!-- 標簽名稱--> <name>catch</name> <!-- -指向的類 也就是具體執行操作的類-> <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> <!-- 是否具有標簽的格式--> <body-content>emty</body-content> </tag>
下面是我一個demo Tag.tld文件中的內容
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>there are my tags of tag</description> <tlib-version>1.2</tlib-version> <!-- 標簽的短名稱 --> <short-name>Tag</short-name> <!-- 綁定到這個uri上 在頁面上要使用 --> <uri>http://www.cnblogs.com</uri> <tag> <description>view ip of client</description> <name>ViewIP</name> <tag-class>web.tag.ViewIpTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
然後是類中的代碼
package web.tag; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class ViewIpTag extends TagSupport { @Override public int doStartTag() throws JspException { HttpServletRequest request =(HttpServletRequest) this.pageContext.getRequest(); JspWriter out=this.pageContext.getOut(); String ip = request.getRemoteAddr(); try { out.write(ip); } catch (IOException e){ throw new RuntimeException(e); } return super.doStartTag(); } }
最後是在jsp頁面的使用
<%@ taglib uri="http://www.cnblogs.com" prefix="Tag" %>
你的ip是:<Tag:ViewIP/>
加入這兩行代碼 然後訪問所在頁面 就能看的本機Ip
JSP自定義標簽的使用簡化版