⑥又是星期五,小试牛刀(编写定制标签)
前言
今天有点迷茫。是身体累了,还是心累了。有种觉得想大哭而无力的感觉(可能心还没成熟,或是昨天羽毛球打累了)。加油,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,用于响应到客户端
1 | public void setJspContext(JspContext jspContext) |
3.JSP 调用setParent方法。将JspTag进来。
1 | 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,有时候迷茫导致我有点不乖。我会坚持习惯,慢慢完成自己的目标。心慢慢练,不然炸了就不好了。哈哈,爸妈身体健康。工作辛苦了!”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架