【问题标题】:Can you specify what JSP page to include based on the request URL?您可以根据请求 URL 指定要包含的 JSP 页面吗?
【发布时间】:2017-02-24 19:27:33
【问题描述】:

我正在尝试学习一些 JEE 开发。假设我正在构建一个网站,其页面有很多常见的 HTML 代码。我想避免为我创建的每个页面重复常见的 HTML 代码。从哲学上讲,似乎有两种方法可以做到这一点。

  1. 继承 - 让每个页面“继承”自一个通用模板,只提供将“注入”到父级相应漏洞中的 HTML 代码。 Django 实际上支持这一点。
  2. 组合 - 通过在您的页面中包含其他预定义的 html sn-ps 来组合页面。

这些不是相互排斥的。理想情况下,您可以从定义基本骨架的父模板继承,但您注入父模板的代码可能由几个不同的 HTML sn-ps 组成。

问题在于 JSP 似乎只真正支持后一种方法:

<%@ include file="header-navigation.jsp" %>
<jsp:include page="/header-navigation.jsp"/>

如果我能够在我的 servlet 上设置一些参数以便我可以动态地包含页面,我可以实现“继承”:

<html>
    <body>
        <header>...commong header code...</header>
        <jsp:include page="/snippets/{view}/>
    </body>
</html>

这仍然是组合,但从代码的角度来看,servlet 可以设置“view”参数,知道它将被注入到整体骨架中,从而实现某种形式的模板“继承”。这是可能的,甚至是可取的吗?

另一种选择是在 base.jsp 文件中包含控制器逻辑,但这看起来很臭。

<% if(view="aboutme") { %><%@ include file="aboutme.jsp" %><% } %>
<% if(view="aboutme") { %><jsp:include file="aboutme.jsp" %><% } %>

第一个看起来很疯狂,因为这是一个静态包含,并且会生成包含所有页面内容的巨大 JSP .class 文件。第二个似乎仍然存在问题,您仍然需要对“aboutme.jsp”进行硬编码...

请就从这里追求的途径提供一些指导!

【问题讨论】:

    标签: java html jsp servlets


    【解决方案1】:

    问题是你的追求和其他千千万万一样,回复不是用JSP。

    有很多专门用来渲染动态网页内容的框架,还是有一些 JSP 和 servlet 的基础知识对学习它们很有帮助。

    如果您想在 java 中进行所有开发,我会考虑 JSF 和 Vaadin。

    然后有可能在 java 中构建服务器登录(特别是使用 REST)并为 UI 使用流行的 javascript 框架(如 Angular 或 React)。

    如果我是你,我会首先从 JSF 开始,因为它是从 JSP(尤其是 EL 语言)构建的。

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多