为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参数/用户输入。
处理复合视图模式的常用框架是什么?
答案 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)