谁编译标签库?

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 一书。