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

Java JSP应用程序中的不同布局和i18n,java,model-view-controller,jsp,tomcat,Java,Model View Controller,Jsp,Tomcat,我在Tomcat中有一堆JSP文件和后端。我有3个不同版本的JSP,内部逻辑相同,但布局不同。所以,如果我改变一些逻辑,我有三个JSP文件要修复 对于这种情况,合适的解决方案是什么?我想到了一些XML和XSLT堆栈:后端只提供XML格式的数据,而对于每个布局,XSLT都发挥了一些神奇的作用 想象一下,您需要在JSP中以各种语言提供stackoverflow。逻辑相同,但布局不同 你能给我指出一些方向吗?看看平铺。这通常是通过使用一些模板引擎来解决的-你创建更小的页面片段,然后你向模板引擎声明某些

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

对于这种情况,合适的解决方案是什么?我想到了一些XML和XSLT堆栈:后端只提供XML格式的数据,而对于每个布局,XSLT都发挥了一些神奇的作用

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


你能给我指出一些方向吗?

看看平铺。

这通常是通过使用一些模板引擎来解决的-你创建更小的页面片段,然后你向模板引擎声明某些视图应该由这些部分组成,以某种方式组合在一起

Struts tiles是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>

/顾客/*
/共享/layout/\u layout\u customers\u top.jsp
/共享/layout/\u layout\u customers\u bottom.jsp

url模式决定了哪些jsp获得哪些jsp片段(RubyonRails中的部分片段)连接到顶部/底部。

了解MVC(模型-视图-控制器)以及jsp应该是视图的一部分并且不应该包含任何逻辑的思想。逻辑属于模型类。

这是一个非常经典的问题域,有很多概念和框架试图解决这个问题(MVC框架,如Struts和JSF,SessionBeans等等)。由于我怀疑你不是一个真正的Java企业“福音传道者”,我将给你两个简单的建议

  • 显然,在JSP中有很多冗余代码。将这些代码提取到“真正的”Java类中,并在所有JSP上使用它们。这样,您就可以在一个地方修改业务逻辑,冗余问题就不会那么严重了

  • 看看级联样式表(CSS)。这是最先进的网页布局方式。如果您有设计良好的html+CSS,您甚至不需要为不同的布局使用不同的JSP

  • 问候