我在Tomcat中有一堆JSP文件和后端。我有3个不同版本的JSP,内部具有相同的逻辑,但布局不同。所以如果我改变一些逻辑,我有三个JSP文件来修复。
这种情况的适当原因是什么?我想到了一些XML和XSLT堆栈:后端只提供XML格式的数据,而且对于每个布局,我都有XSLT做了一些魔术。
想象一下,您需要在JSP中提供各种语言的stackoverflow。逻辑相同,但布局不同。
你能指出我的方向吗?
答案 0 :(得分:1)
这通常通过使用一些模板引擎来解决 - 您创建较小的页面片段,然后向模板引擎声明某些视图应该由这些部分组成,以某种方式组合在一起。
Struts tiles是Java世界中的经典示例,但与Java和其他语言中的更现代的framworks相比,它确实变得陈旧和苛刻。 Tapestry和Wicket是两个更现代的(虽然没有使用它们)。
虽然应用整个网络框架只有3页可能有点过分,但如果你的网站增长......
答案 1 :(得分:1)
使用普通的旧JSP,没有任何类型的fameworks:
1) 使用控制器进行处理,仅使用jsp显示数据
2) 使用jsp include指令将标题,导航,菜单,页脚和其他必要的公共/共享元素包含在所有这些布局中。
和/或:
在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模式确定哪个jsps获取哪个jsp片段(Ruby on Rails中的部分)附加到顶部/底部。
答案 2 :(得分:1)
了解MVC(模型视图控制器)以及JSP应该是View的一部分并且不应包含任何逻辑的想法。逻辑属于Model类。
答案 3 :(得分:0)
看看Tiles。
答案 4 :(得分:0)
这是一个非常经典的问题域,并且有很多概念和框架试图解决这个问题(MVC框架,如Struts和JSF,SessionBeans,但是)。因为我怀疑你不是一个真正的Java企业“传道者”,我会给你两个简单的建议。
你的JSP中显然有很多冗余代码。将此代码解压缩为“真正的”Java类,并在所有JSP上使用它们。这样,您就可以在一个地方修改业务逻辑,冗余不会成为问题。
看一下层叠样式表(CSS)。这是布局网页的最先进方式。如果你有精心设计的html + CSS,你甚至可能不需要不同的JSP用于不同的布局。
此致