JSP应用程序中的不同布局和i18n

时间:2008-09-25 11:37:55

标签: java model-view-controller jsp tomcat

我在Tomcat中有一堆JSP文件和后端。我有3个不同版本的JSP,内部具有相同的逻辑,但布局不同。所以如果我改变一些逻辑,我有三个JSP文件来修复。

这种情况的适当原因是什么?我想到了一些XML和XSLT堆栈:后端只提供XML格式的数据,而且对于每个布局,我都有XSLT做了一些魔术。

想象一下,您需要在JSP中提供各种语言的stackoverflow。逻辑相同,但布局不同。

你能指出我的方向吗?

5 个答案:

答案 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企业“传道者”,我会给你两个简单的建议。

  1. 你的JSP中显然有很多冗余代码。将此代码解压缩为“真正的”Java类,并在所有JSP上使用它们。这样,您就可以在一个地方修改业务逻辑,冗余不会成为问题。

  2. 看一下层叠样式表(CSS)。这是布局网页的最先进方式。如果你有精心设计的html + CSS,你甚至可能不需要不同的JSP用于不同的布局。

  3. 此致