如何在JSP输出之前和之后编写内容

时间:2012-06-30 20:14:19

标签: java html jsp servlets

我有代表组件的JPS。我想让这些组件JSP在执行JSP的内容之前和之后编写一些HTML。

component.jsp

<@page session="false">
<%= "hello " + "world" %>

当渲染这个JSP / servlet时,我希望它呈现:

<div class="component">
hello world
</div>

我希望能够创建各种“包装器”,并且根据JSP,包含使用正确内容包装JSP的内容。如果我想在路上更改/扩充包装器,我想只在一个地方进行(可能是100个组件)。

我可以使用&lt; @page extends =“...”&gt;执行某些操作吗?可能?

由于

2 个答案:

答案 0 :(得分:1)

您想要的是:标记文件。在JSP 2.0上引入

使用这种方法,您可以使用jsp编写JSP标记,因此您需要创建一个名为WEB-INF/tags的文件夹,并在此文件夹中创建一个“普通”jsp。

您要创建的标记需要具有以下开始指令: <%@tag description="tag description" %>以表明这是一个标记。

要使用它,您需要使用以下说明引用要使用的标记:<%@ taglib tagdir="/WEB-INF/tags" prefix="custom"%>

所以,你可以这样做: WEB-INF /标签/ myTag.tag


<%@tag description="hello tag" %>
<%@attribute name="name" required="false" type="java.lang.String"%>
<html><head></head><body>
<h1>Hello <%=name%></h1>
<jsp:doBody />
</body>

的index.jsp


<%@ taglib tagdir="/WEB-INF/tags" prefix="custom"%>
<custom:myTag name="My Name">this is the content</custom:myTag>

结果将是页面打印

<html><head></head><body>
<h1>Hello My Name</h1>
this is the content
</body>

答案 1 :(得分:0)

这是一个可怕的想法。使用scriptlet的JSP是1998技术。 没有人再写这些了。

如果你必须编写JSP,最好使用JSTL和SiteMesh或Tiles之类的东西来复合页面。

更好的想法是开始转向可能让您轻松运行移动解决方案和Web应用程序的东西。服务和模板将是我对JSP的偏好。