JSP模板实现(Composite View Pattern)

时间:2009-12-10 16:00:57

标签: java jsp templates

为Java网站实现Composite View Pattern的最佳方法是什么?

我的想法是拿一个jsp并包含多个页面,如:

<h1>Layout Start</h1>
<%
Values values = DataHandler.getValues(request);
LayoutHelper layout = values.getLayout();
out.println("Layout.getContent(): " + layout.getContent());
%>

<jsp:include page="<%= layout.getContent() %>" flush="false" />

<h1>Layout End</h1>

但是WEB-INF目录中的所有小jsp文件仍可供用户使用。如何拒绝访问除一个模板之外的所有.jsp文件。

之后我需要一个过滤器或Servlet来在Values对象中插入路径。

更新 我并不是说可以从文件系统(或Web服务器)访问WEB-INF,而是从Web应用程序通过控制器访问,当前布局layout.getcontent()映射到URL参数/用户输入。

处理复合视图模式的常用框架是什么?

3 个答案:

答案 0 :(得分:4)

用户无法直接访问WEB-INF中的任何文件。我通常将所有JSP放在WEB-INF/jsp中,然后只有控制器servlet(或其他JSP页面)可以访问它们。

答案 1 :(得分:3)

Pro Java EE and Spring Patterns提到了两个支持Composite View模式的流行框架:

就个人而言,我使用过Tiles,它就像一个与Struts和Spring集成的魅力。 SiteMesh还依赖于Decorator模式。在Tiles网站上,两种模式的好处之间存在nice comparison

答案 2 :(得分:2)

Apache Tiles正在研究这个概念。

http://tiles.apache.org/framework/tutorial/pattern.html

值得研究一下。