前言
今天有點迷茫。是身體累了,還是心累了。有種覺得想大哭而無力的感覺(可能心還沒成熟,或是昨天羽毛球打累了)。加油,Jeff Li. 活在當下,堅持打好基礎,堅持刷ACM,堅持coding。
今天下午的小故事,其實我今天想回家。但不知道住哪里?買了動車票,等車的時候,我在候車室看着書。漸漸地,回去,家?爸媽在遠地工作。家,仿佛還是實驗室是我的家。漸漸地,收拾書本。我退了票,做上了回來的公交,返回終點站的學校。
路途中,發現了一位老者,還是莫莫的掃着往前看沒有盡頭,往后看掃過的地也是沒有盡頭的馬路。抬了下頭,用自己暗色的工作服擦去額上的汗水。“他是用生命在work,用生命在路上。”想想自己,迷茫,何必迷茫?用生命看書,獲取知識,用生命去coding。我的理想[傳送門]會靠近。
“I can do it !”
言歸正傳
定制標簽概述
利用JSP標准動作指令訪問和操作JavaBeans,是首次嘗試將表現代碼(html)和業務邏輯(java 代碼)實現分離。JSP 2.0添加了兩項新特性,第一個特性是一個新的接口,稱作Simple Tag. 第二項特性是一種使編寫定制標簽一樣編寫標簽文件機制。[go]
簡單工作原理和小范例
A simple pic of its principle
簡單的標簽處理器中的主體用一個JspFragment類實例表示其生命周期。
1.JSP容器創建簡單標簽處理器實例
2.JSP→setJspContext 傳遞一個JspContext對象,其對象返回一個JspWriter,用於響應到客戶端
public void setJspContext(JspContext jspContext)
3.JSP 調用setParent方法。將JspTag進來。
public void setParent(JspTag parent)
4.JSP為每個標簽定義的屬性設置方法(Setter)
5.若標簽有主體內容,則JSP調用SimpleTag接口的setJspBody方法,將主體作為JspFragment傳遞。
6.Jsp調用doTag方法(SimpleTag只有這個接口),所有變量該方法同步。
mum said, “I learned a little . so i use my hand to earn money by the hard work.”
SimpleTag 小例子
結構
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; //傳遞的對象 @Override public void doTag() throws JspException, IOException { System.out.println("doTag"); jspContext.getOut().print("This is my first tag"); } @Override public JspTag getParent() { System.out.println("getParent"); return null; } @Override public void setJspBody(JspFragment arg0) { System.out.println("setJspBody"); } @Override public void setJspContext(JspContext arg0) { System.out.println("setJspContext"); this.jspContext = arg0; } @Override public void setParent(JspTag arg0) { System.out.println("setParent"); } }
注冊標簽-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>
效果圖
自然,控制台打印也是調用流程... 自己看吧,親們
小結:
JSP→setJspContext 傳遞一個JspContext對象,其對象返回一個JspWriter,用於響應到客戶端。
編寫EL函數
EL(JSP Expression Language),忘了就[傳送門]
編寫兩個步驟(這里我們還是用上面的項目add 進去):
①寫靜態public類
②將function元素注冊標簽庫
在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 內<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")}
此時,我在聽天籟。一個好的耳機,讓我很陶醉,不累. 想起阿公一句話:“書法,堅持練。肯定比我好了。有些字我還要向你學習呢。”
小朽作品一張,做比說難。貴在堅持!
發布定制標簽(我很看好,以后這樣做)
簡單來說,打個jar以便其他人使用。
123,輕松搞定(上面function為例)
①結構
②在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
去總結
對於,分離表現邏輯和業務邏輯來說,用定制標簽必用javabean好很多。還有 打包 jar,我馬上要用起來。
這里想對媽媽說,“sorry,有時候迷茫導致我有點不乖。我會堅持習慣,慢慢完成自己的目標。心慢慢練,不然炸了就不好了。哈哈,爸媽身體健康。工作辛苦了!”