【问题标题】:Navigating through several pages in JSP在 JSP 中浏览多个页面
【发布时间】:2014-01-17 11:38:35
【问题描述】:

JSP, Servlets, MVC, JSTL

我正在开发一个简单的博客应用程序。我的主页应该显示十个最新的帖子摘要。 在servlet 中,我正在创建post objects 列表(由date 排列),将其附加到request 并转发到适当的jsp 页面。现在,假设该列表中有(例如)56 个帖子。

我希望我的博客主页显示该列表中的前十个帖子(帖子标题、日期和摘要),并在页面底部有导航部分到下一个/上一个、第一个/最后一个和数字标记页面(博客的常用概念)。因此,例如,如果列表中有 56 个帖子,则将有 6 页(最后一页有 6 个帖子)。如果我点击数字 2,则会显示 11-20 的帖子摘要。

我知道如何使用JSTL 从请求范围内的列表中提取/读取数据。但是如何实现导航概念呢?

【问题讨论】:

    标签: html jsp servlets model-view-controller jstl


    【解决方案1】:

    这取决于您如何获得List 的 56 个帖子。您可以将结果分成一定大小的页面,比如 10。

    您可以使用请求参数来指示要获取的页面。例如,默认值为

    http://yourhost/app/news
    

    这会给你第一页。这相当于

    http://yourhost/app/news?page=1
    

    然后你可以指定另一个页面

    http://yourhost/app/news?page=2
    

    然后您必须从您的List 中获取一个从索引开始的sublist

    (pageValue - 1) * sizeOfAPage
    

    并且只返回那些。这不会在 JSP 中完成,而是在实际的 Servlet 中完成。

    【讨论】:

    • 好吧,在 servlet 中,我正在使用 DAO 和 JPQL 从数据库中读取帖子数据:List<Post> posts = postDao.getNewestPosts();Dao 对象中:Query q = em.createNamedQuery("getNewestPosts"); List<Post> resultList = (List<Post>) q.getResultList(); 其中getNewestPosts 是:SELECT p FROM Post p ORDER BY p.date DESC。您建议在 servlet 中列出子列表? (我不确定我是否理解你的想法)
    • @Wlad 如果您从数据库中获取它,则不需要加载整个内容。使用 SQL LIMIT (mysql example) 选择起始索引和元素个数。
    • 啊哈,我现在明白了。感谢您的解释。
    • @Wlad 不客气。您可能有兴趣使用 firebug 和 stackoverflow 的分页技术。进入问题页面,通过底部的页面链接,查看请求参数。
    • 是的,Firebug 看起来是非常有用的工具。但是,目前我正在使用 Chrome,Chrome 有自己的页面检查工具:工具->开发者工具。我相信它提供了与 Firefox 中的 Firebug 类似的功能。
    猜你喜欢
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多