JSP应用程序中的不同布局和i18n
时间:2020-03-06 14:42:58 来源:igfitidea点击:
我在Tomcat中有一堆JSP文件和后端。我有3种不同的JSP版本,它们的内部逻辑相同但布局不同。因此,如果我更改某些逻辑,则有三个要修复的JSP文件。
在这种情况下,正确的姿态是什么?我想到了一些XML和XSLT堆栈:后端仅以XML形式提供数据,并且比起每个布局,我都有XSLT来做一些魔术。
试想一下,我们需要在JSP中以各种语言提供stackoverflow。逻辑相同但布局不同。
你能指出我的方向吗?
解决方案
看看Tiles。
通常可以通过使用一些模板引擎来解决此问题,即创建较小的页面片段,然后向模板引擎声明某些视图应由这些部分组成,并以某种方式组合在一起。
Struts磁贴是Java世界中的经典示例,但与Java和其他语言中的更现代的framworks相比,它确实变得古老而笨拙。 Tapestry和Wicket是另外两个现代的(虽然还没有使用过)。
不过,仅3个页面就可以使用整个Web框架,但是如果网站规模不断扩大……
使用没有任何名气的普通JSP:
使用控制器进行处理,仅使用jsp显示数据
使用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中的部分)。
了解MVC(模型视图控制器)以及JSP应该是其视图部分并且不包含任何逻辑的想法。逻辑属于Model类。
这是一个非常经典的问题领域,并且有很多概念和框架正在尝试解决此问题(MVC框架,例如Struts和JSF,SessionBeans仅举一例)。我怀疑我们不是Java企业的"传播家",所以我给我们2条简单的建议。
- 显然,JSP中有很多冗余代码。将此代码提取到"真实的" Java类中,并在所有JSP上使用它们。这样,我们将能够在一处修改业务逻辑,而冗余将不再是一个问题。
- 看一下层叠样式表(CSS)。这是布局网页的最新技术。如果我们具有精心设计的html + CSS,甚至可能不需要为不同的布局使用不同的JSP。
问候