在JSP中引用Java的最佳实践

时间:2010-01-20 04:45:56

标签: java jsp

我要求在JSP中引用Java代码(在我的例子中是枚举值)的一些意见。

我目前在JSP中有条件逻辑,如:

<c:if test="${actionBean.order.status eq 'complete'}">    
    show some stuff
</c:if>

现在,'complete'是与我的代码库中的枚举相关联的值。在我的JSP中引用枚举会更好吗?如果是这样,怎么样?

我认为这可能是一件好事,因为:如果枚举发生变化,那么JSP就不会中断。

将Java代码混合到JSP中是不好的做法?或者复制'完整'的值是否更糟?

提前致谢。

3 个答案:

答案 0 :(得分:1)

  

将Java代码混合到JSP中是不好的做法?或者复制'完整'的值是否更糟?

我的观点是你应该避免将Java代码与JSP混合,即使它意味着一些有限的符号/值重复。

以这种方式思考:可以在Java端进行许多可能“破坏”JSP的更改。例如,在这种情况下,“actionBean”的名称,getOrder()getStatus()方法可能会发生变化。或getOrder()可以返回null或其他类型的内容。如果你担心Java方面可能发生的所有变化,你最终根本就不会使用taglib。

答案 1 :(得分:1)

您在JSP中与之比较的枚举值实际上与String.valueOf(enum)相同,默认情况下,这恰好是枚举名称。因此,如果您更改枚举的名称,那么您还应该更改JSP代码。所以我认为与实际枚举对象进行比较没有任何好处。它也会被String强加给String.valueOf(enum),你最终会将两个String相互比较。保持原样。

关于在JSP文件中引用Java代码:

HttpServlet中直接引用的所有Java代码都可以进一步细分:

  • 如果您要过滤请求/回复,请使用Filter class
  • 如果您想与数据库进行交互,请使用DAO class
  • 如果您要存储/传输/访问数据,请使用Javabean (DTO) class
  • 如果要执行业务逻辑,请使用Domain(BO)类(考虑策略模式)。
  • 如果您想拥有/使用可重复使用的静态工具,请使用Utility类(最终类,私有构造函数)。

答案 2 :(得分:0)

你不能为你是否想要在JSP之外“显示一些东西”而只是传递一个简单的布尔参数来判断是否要显示这些东西吗?这样你就可以避免重复枚举值,并且在控制器中而不是在视图中保留那一点逻辑。