有人可以解释JSP自定义标记库和JSP 2标记文件背后的想法吗?
他们只是采用不同的方式做同样的事情吗?
他们如何比较?它们的优点和缺点是什么,哪个更好?
答案 0 :(得分:8)
我< 3标签文件,但JSTL的首席开发人员如果他们真的这么说就吸烟了。您不能将所有标记库标记重写为标记文件标记,原因很重要:标记文件无法执行:
返回EVAL_BODY_INCLUDE;
换句话说,标记文件的正文内容只有三个选项:
空:没有内在内容,即。 < someTag />
无脚本:没有JSP内部内容,即。 < someTag>< p> hello world< / p>< / someTag>是的,但不是< someTag>< p><%= helloWorld.toString()%>< / p>< / someTag>
tagdependent:您可以拥有JSP内部内容,但不会这样处理;相反,你必须解析/渲染它,但你认为合适
但是使用旧样式标记库标记,您可以: <体含量> JSP< /体含量> (在tld文件中)然后“返回EVAL_BODY_INCLUDE;”来自你的“doStartTag”。如果这样做,所有JSP指令都将被解析,就像它们是页面的正常部分一样,并且您的标记只是用适当的内容包装它们。
就个人而言,我的经验法则是:尽可能使用标记文件,即。每当你不需要JSP指令在标记内部工作时,因为它们比非程序员更容易清理一百万倍,不需要tld(如果你将它们保存在一个单独的命名空间中你的标签库标签)。
但是如果您想在标记内部使用JSP内容,那么您唯一的选择就是标记库标记。希望有一天,JSP人员会发布一种在标记文件标记内部进行JSP指令处理的方法,然后我们真的可以放弃旧的基于类的标记,但在此之前请不要尝试用标记文件做所有标记因为你很快就会被简化为为每一个逻辑片段制作自定义标签(因为这是在不使用JSP指令的情况下进行逻辑的唯一方法)。
答案 1 :(得分:6)
开发自定义标记的问题
传统的自定义标签需要Java编程 技能。
除了最简单的自定义标签外,所有标签都不容易编写。
与servlet相比,JSP的目的是使用 标记语言来管理嵌入式布局 动态内容。
必须编写复杂的Java代码 在专注于标记语言的自定义标记中 向后。
我们可能想要使用JSP表达式语言或 实现新自定义时的其他自定义标记 标签
解决方案 JSP 2.0标记文件
标记文件的不同之处?
使用JSP语法编写。
由 .tag 或 .tagx 后缀标识。
旨在为自定义标记开发人员提供易于开发而不会丢失功能。