⑥又是星期五,小试牛刀(编写定制标签)
前言
今天有點(diǎn)迷茫。是身體累了,還是心累了。有種覺得想大哭而無力的感覺(可能心還沒成熟,或是昨天羽毛球打累了)。加油,Jeff Li. 活在當(dāng)下,堅(jiān)持打好基礎(chǔ),堅(jiān)持刷ACM,堅(jiān)持coding。
今天下午的小故事,其實(shí)我今天想回家。但不知道住哪里?買了動(dòng)車票,等車的時(shí)候,我在候車室看著書。漸漸地,回去,家?爸媽在遠(yuǎn)地工作。家,仿佛還是實(shí)驗(yàn)室是我的家。漸漸地,收拾書本。我退了票,做上了回來的公交,返回終點(diǎn)站的學(xué)校。
路途中,發(fā)現(xiàn)了一位老者,還是莫莫的掃著往前看沒有盡頭,往后看掃過的地也是沒有盡頭的馬路。抬了下頭,用自己暗色的工作服擦去額上的汗水。“他是用生命在work,用生命在路上。”想想自己,迷茫,何必迷茫?用生命看書,獲取知識(shí),用生命去coding。我的理想[傳送門]會(huì)靠近。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? “I can do it !”
言歸正傳
定制標(biāo)簽概述
利用JSP標(biāo)準(zhǔn)動(dòng)作指令訪問和操作JavaBeans,是首次嘗試將表現(xiàn)代碼(html)和業(yè)務(wù)邏輯(java 代碼)實(shí)現(xiàn)分離。JSP 2.0添加了兩項(xiàng)新特性,第一個(gè)特性是一個(gè)新的接口,稱作Simple Tag. 第二項(xiàng)特性是一種使編寫定制標(biāo)簽一樣編寫標(biāo)簽文件機(jī)制。[go]
?
簡(jiǎn)單工作原理和小范例
?
A simple pic of its principle
?
簡(jiǎn)單的標(biāo)簽處理器中的主體用一個(gè)JspFragment類實(shí)例表示其生命周期。
?
1.JSP容器創(chuàng)建簡(jiǎn)單標(biāo)簽處理器實(shí)例
2.JSP→setJspContext 傳遞一個(gè)JspContext對(duì)象,其對(duì)象返回一個(gè)JspWriter,用于響應(yīng)到客戶端
public void setJspContext(JspContext jspContext)3.JSP 調(diào)用setParent方法。將JspTag進(jìn)來。
public void setParent(JspTag parent)4.JSP為每個(gè)標(biāo)簽定義的屬性設(shè)置方法(Setter)
5.若標(biāo)簽有主體內(nèi)容,則JSP調(diào)用SimpleTag接口的setJspBody方法,將主體作為JspFragment傳遞。
6.Jsp調(diào)用doTag方法(SimpleTag只有這個(gè)接口),所有變量該方法同步。
?
mum said, “I learned a little . so i use my hand to earn money by the hard work.”
?
SimpleTag 小例子
結(jié)構(gòu)
?
MyFirstTag類
package sedion.jeffli.tag;import java.io.IOException;import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.JspTag; import javax.servlet.jsp.tagext.SimpleTag;public class MyFirstTag implements SimpleTag{JspContext jspContext; //傳遞的對(duì)象 @Overridepublic void doTag() throws JspException, IOException {System.out.println("doTag");jspContext.getOut().print("This is my first tag");}@Overridepublic JspTag getParent() {System.out.println("getParent");return null;}@Overridepublic void setJspBody(JspFragment arg0) {System.out.println("setJspBody");}@Overridepublic void setJspContext(JspContext arg0) {System.out.println("setJspContext");this.jspContext = arg0;}@Overridepublic void setParent(JspTag arg0) {System.out.println("setParent");}} View Code
注冊(cè)標(biāo)簽-mytags.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/j2eeweb-jsptaglibraty_2_1.xsd"version="2.1"><tlib-version>1.0</tlib-version><short-name>mt</short-name><tag><name>firstTag</name><tag-class>sedion.jeffli.tag.MyFirstTag</tag-class><body-content>empty</body-content></tag></taglib>
顯示的jsp-index.jsp
<%@taglib uri="/WEB-INF/classes/mytags.tld" prefix="easy"%> <html><head><title>this is my first tag</title></head><body>hello! tags<br/><easy:firstTag></easy:firstTag></body> </html>
效果圖
自然,控制臺(tái)打印也是調(diào)用流程... 自己看吧,親們
小結(jié):
JSP→setJspContext 傳遞一個(gè)JspContext對(duì)象,其對(duì)象返回一個(gè)JspWriter,用于響應(yīng)到客戶端。
?
編寫EL函數(shù)
EL(JSP Expression Language),忘了就[傳送門]
編寫兩個(gè)步驟(這里我們還是用上面的項(xiàng)目add 進(jìn)去):
①寫靜態(tài)public類
②將function元素注冊(cè)標(biāo)簽庫(kù)
在sedion.jeffli.tag包下 -- MyFunctions類
package sedion.jeffli.tag;public class MyFunctions {public static String reverseString(String s){return new StringBuffer(s).reverse().toString();} }?
mytags.tld 內(nèi)<taglib></taglib>之間添加
<function><name>reverseString</name><function-classe>sedion.jeffli.tag.MyFunctions</function-classe><function-signature>java.lang.String reverseString(java.lang.String)</function-signature></function>
頁面添加
${easy:reverseString("hello EL functions")}?
此時(shí),我在聽天籟。一個(gè)好的耳機(jī),讓我很陶醉,不累. 想起阿公一句話:“書法,堅(jiān)持練。肯定比我好了。有些字我還要向你學(xué)習(xí)呢。”
? ? ?小朽作品一張,做比說難。貴在堅(jiān)持!
發(fā)布定制標(biāo)簽(我很看好,以后這樣做)
簡(jiǎn)單來說,打個(gè)jar以便其他人使用。
123,輕松搞定(上面function為例)
?
①結(jié)構(gòu)
?
?
②在tld文件<taglib></taglib>之間添加uri
<uri>http://examp.com/taglib/function</uri>
③改。去頁面
<%@taglib uri="http://examp.com/taglib/function" prefix="easy"%>?
這,懵懵懂懂那些java.lang.String形成。我以后也要開源寫出來hlep others
?
去總結(jié)
對(duì)于,分離表現(xiàn)邏輯和業(yè)務(wù)邏輯來說,用定制標(biāo)簽必用javabean好很多。還有 打包 jar,我馬上要用起來。
?
這里想對(duì)媽媽說,“sorry,有時(shí)候迷茫導(dǎo)致我有點(diǎn)不乖。我會(huì)堅(jiān)持習(xí)慣,慢慢完成自己的目標(biāo)。心慢慢練,不然炸了就不好了。哈哈,爸媽身體健康。工作辛苦了!”
?
轉(zhuǎn)載于:https://www.cnblogs.com/Alandre/p/3601389.html
總結(jié)
以上是生活随笔為你收集整理的⑥又是星期五,小试牛刀(编写定制标签)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3150 Pibonacci数 - Wi
- 下一篇: 我的博客初始化