谁编译标签库?
Who compiles the taglibs?
我正在研究一种混合代码,在一个 JSP 存档中:java 命令、表达式语言命令和标签库。所以,我知道Java代码是在一个Servlet中转化的,EL是由servlet容器编译的。但是标签库呢?例如:
<jsp:useBean id="contact" class="package1.package2.contact"/>
谁处理此代码?或者如果我放在标记文件的开头:
<%@ attribute name="id" required="true" %>
并在我的 JSP 代码中调用此标记文件:
<caelum:DateField id="bornDate" />
谁负责管理此参数传递?
容器负责编译和处理您的JSP页面标签文件或标签库文件。
我们知道 JSP 主要有两个阶段:
1:- 翻译阶段
2:- 执行阶段
当你在下面提到 JSP tag file
<%@ attribute name="id" required="true" %>
容器会将您的标记文件转换为实现 SimpleTag
接口的 class。每当你的标签文件被调用时 doTag()
翻译的方法 class 将被调用,当你提到 <%@attribute>
(任何指令)意味着你正在向容器发出特殊指令,然后是容器将在翻译时翻译它根据需要更改翻译class。
在每个标签的末尾,无论是标准操作、标签文件还是自定义标签,标签处理程序 classes 都由 JSP 容器调用。
和
<caelum:DateField id="bornDate" />
对于上面的标签,必须有一个标签处理程序 class(可能是你写的)扩展 SimpleTagSupport class 或 TagSupport class 并且必须有一个标签文件与实施相关 class。所以要处理id属性
1:- 您必须在 .tld 文件中提及 <attribute>
元素。
2:- 在标签处理程序中为 id 属性设置 getter 和 setter class.
当执行上述标签时,将调用相应的标签处理程序 class 并调用 setId()
方法。
这是一个非常简短的解释。还有很多东西需要理解,比如数据类型转换等。最好阅读 Head First Servlet Jsp 一书。
我正在研究一种混合代码,在一个 JSP 存档中:java 命令、表达式语言命令和标签库。所以,我知道Java代码是在一个Servlet中转化的,EL是由servlet容器编译的。但是标签库呢?例如:
<jsp:useBean id="contact" class="package1.package2.contact"/>
谁处理此代码?或者如果我放在标记文件的开头:
<%@ attribute name="id" required="true" %>
并在我的 JSP 代码中调用此标记文件:
<caelum:DateField id="bornDate" />
谁负责管理此参数传递?
容器负责编译和处理您的JSP页面标签文件或标签库文件。 我们知道 JSP 主要有两个阶段: 1:- 翻译阶段 2:- 执行阶段
当你在下面提到 JSP tag file
<%@ attribute name="id" required="true" %>
容器会将您的标记文件转换为实现 SimpleTag
接口的 class。每当你的标签文件被调用时 doTag()
翻译的方法 class 将被调用,当你提到 <%@attribute>
(任何指令)意味着你正在向容器发出特殊指令,然后是容器将在翻译时翻译它根据需要更改翻译class。
在每个标签的末尾,无论是标准操作、标签文件还是自定义标签,标签处理程序 classes 都由 JSP 容器调用。
和
<caelum:DateField id="bornDate" />
对于上面的标签,必须有一个标签处理程序 class(可能是你写的)扩展 SimpleTagSupport class 或 TagSupport class 并且必须有一个标签文件与实施相关 class。所以要处理id属性
1:- 您必须在 .tld 文件中提及 <attribute>
元素。
2:- 在标签处理程序中为 id 属性设置 getter 和 setter class.
当执行上述标签时,将调用相应的标签处理程序 class 并调用 setId()
方法。
这是一个非常简短的解释。还有很多东西需要理解,比如数据类型转换等。最好阅读 Head First Servlet Jsp 一书。