为Java网站实现“复合视图模式”的最佳方法是什么?
我的想法是采用一个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应用程序从Web应用程序访问,而我当前的布局layout.getcontent()映射到URL参数/用户输入。
layout.getcontent()
什么是处理复合视图模式的常用框架?
Pro Java EE和Spring Patterns提到了两个支持Composite View模式的流行框架:
我个人使用Tiles,它像Struts和Spring的魅力一样工作。SiteMesh也依赖于装饰器模式。在Tiles网站上,两种模式的好处之间有很好的比较。