我在 Tomcat 中有一堆 JSP 文件和后端。我有 3 个不同版本的 JSP,内部逻辑相同,但布局不同。所以如果我改变一些逻辑,我需要修复三个 JSP 文件。
这种情况的正确解决方案是什么?我想到了一些 XML 和 XSLT 堆栈:后端只提供 XML 格式的数据,而且对于每个布局,我都有 XSLT 可以发挥一些作用。
试想一下,您需要在 JSP 中提供各种语言的 stackoverflow。逻辑相同,但布局不同。
你能给我指出一些方向吗?
我在 Tomcat 中有一堆 JSP 文件和后端。我有 3 个不同版本的 JSP,内部逻辑相同,但布局不同。所以如果我改变一些逻辑,我需要修复三个 JSP 文件。
这种情况的正确解决方案是什么?我想到了一些 XML 和 XSLT 堆栈:后端只提供 XML 格式的数据,而且对于每个布局,我都有 XSLT 可以发挥一些作用。
试想一下,您需要在 JSP 中提供各种语言的 stackoverflow。逻辑相同,但布局不同。
你能给我指出一些方向吗?
这通常通过使用一些模板引擎来解决 - 您创建较小的页面片段,然后向模板引擎声明某些视图应该由这些部分组成,以某种方式组合在一起。
Struts tile 是 Java 世界中的经典示例,但与 Java 和其他语言中更现代的框架相比,它确实变得陈旧和粗糙。Tapestry 和 Wicket 是两个更现代的(虽然没有使用过)。
不过,对于只有 3 个页面,应用整个 Web 框架可能有点过头了,但是如果您的网站增长...
使用没有任何名声的普通旧 JSP:
1)使用控制器进行处理,只使用jsp显示数据
2) 使用 jsp 包含指令将页眉、导航、菜单、页脚和其他必要的公共/共享元素包含到所有这些布局中。
或/和:
在 web.xml 中使用以下内容
<jsp-property-group>
<url-pattern>/customers/*</url-pattern>
<include-prelude>/shared/layout/_layout_customers_top.jsp</include-prelude>
<include-coda>/shared/layout/_layout_customers_bottom.jsp</include-coda>
</jsp-property-group>
url 模式确定哪些 jsp 获取哪些 jsp 片段(Ruby on Rails 中的部分)附加到顶部/底部。
了解 MVC(模型视图控制器)以及 JSP 应该是它的视图部分并且不应该包含任何逻辑的想法。逻辑属于模型类。
看看瓷砖。
这是一个非常经典的问题领域,有很多概念和框架试图解决这个问题(MVC 框架,如 Struts 和 JSF,SessionBeans 等等)。由于我怀疑您并不是真正的 Java 企业“传道者”,因此我将给您 2 个简单的建议。
您的 JSP 中显然有很多冗余代码。将此代码提取到“真正的”Java 类中,并在所有 JSP 上使用它们。这样,您将能够在一个地方修改业务逻辑,冗余将不再是一个问题。
看看级联样式表 (CSS)。这是最先进的网页布局方式。如果您有精心设计的 html + CSS,您甚至可能不需要针对不同布局使用不同的 JSP。
问候