【问题标题】:JSP template implementation (Composite View Pattern)JSP模板实现(复合视图模式)
【发布时间】:2009-12-10 16:00:57
【问题描述】:

为 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-INF 可以从文件系统(或 Web 服务器)访问,而是从 Web 应用程序通过控制器访问,我当前的布局 layout.getcontent() 映射到 URL 参数/用户输入。

处理复合视图模式的常用框架有哪些?

【问题讨论】:

    标签: java jsp templates


    【解决方案1】:

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

    【讨论】:

    • 他说了什么。这实际上是许多框架所做/鼓励的事情。
    【解决方案2】:

    Pro Java EE and Spring Patterns 提到了两个支持复合视图模式的流行框架:

    我个人使用 Tiles,它就像一个与 Struts 和 Spring 集成的魅力。 SiteMesh 也依赖于装饰器模式。在 Tiles 网站中,nice comparison 介于两种模式的优势之间。

    【讨论】:

      【解决方案3】:

      Apache Tiles 正在研究这个概念。

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

      值得研究一下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-07
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        相关资源
        最近更新 更多