0

我刚开始学习 struts(+spring) MVC,我可以对这种情况做一些解释:

我正在为我的表示层使用 Struts Tiles,我想在几个磁贴中显示数据库中的一些数据,这些磁贴与主要内容磁贴将形成完整的页面。我想不出适合 mvc 模式/最佳实践的正确方法。

这些图块的内容是从数据库中获取的,它不是基于用户输入的,例如列出添加到商店的少数最新产品的图块等。

我做了什么:我使用静态方法创建了“A”类,该方法查询数据库并返回一些最新产品的列表,并且在此图块的 jsp 中,我刚刚放置了 scriptlet,例如:
<% for each item in A.GetLastestProducts(); 显示数据 %>

但有人告诉我这样做是不好的

有人可以解释一下如何正确处理这种情况,例如“创建将查询您的数据库的类,而不是创建将 blach blach 的 blach,然后在您的 tile jsp blach blach 中”

谢谢

4

1 回答 1

1

如果您使用的是struts,我建议为您的JSP 使用struts 架构。我可能会像这样构造它:

public class MyStutsAction extends ActionSupport implements preparable{

    private List<MyNewProducts> newProducts;

    @Override
    public void prepare() throws Exception {
        if(products == null){
            products = MyNewProductsDAO.getProductList();
        }
    }

    //Struts action stuff

    public List<MyNewProducts> getNewProducts(){
        return newProducts;
    }

    public setNewProducts(List<MyNewProducts> newProdcuts){
        this.newProducts = newProducts;
    }

}

然后从您的 JSP 页面中,您可以这样访问它:

<s:iterator value="newProducts" status="stat">
    <div> <s:property value="%{attributeName}" /> </div>
</s:iterator>

这将通过在值堆栈中维护您的产品列表来消除一些不必要的数据库调用,并且如果由于某种原因它为空,prepare 方法中的条件将填充列表。

于 2011-09-16T15:55:59.813 回答