如何在jsp中显示java中的ArrayList项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在jsp中显示java中的ArrayList项?相关的知识,希望对你有一定的参考价值。

我已经生成了一个Arraylist,我逐行从数据库中获取项目。我想在jsp中显示值,但我不知道如何将jsp绑定到java。

在java类中,listBook是BookBean类型的Arraylist。

BookDao课程:

public  ArrayList<BookBean> listBooks = new ArrayList<>();

....

System.out.println(listBooks.get(0).getId()); ->display id of first row
System.out.println(listBooks.get(0).getTitle()); ->display title of first row
System.out.println(listBooks.get(0).getAuthor());

在我的Controller类中,我有:

    public String showBooks(Model bookModel){
        bookModel.addAttribute("bookAttribute", new BookDao());
        return "book-list";
    }

我想通过使用Controller中的模型在jsp中打印listBook的结果。我怎样才能做到这一点?

BookDao:
public  ArrayList<BookBean> listBooks = new ArrayList<>();
 public void generateBookList() {
        try {
            Connection connection = ConnectToDatabase.createConnection();
            if (connection != null) {
                PreparedStatement preparedStatement = connection.prepareStatement("SELECT * from book ");
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    BookBean bookBean = new BookBean(resultSet.getInt("id_book"), resultSet.getString("title"), resultSet.getString("author"), resultSet.getString("publishDate"), resultSet.getInt("quantity"), resultSet.getString("bookPrice"));
                    listBooks.add(bookBean);
                } }
        } catch (Exception e) {
            e.printStackTrace();
        }}

BookController打开jsp页面“book-list.jsp”:

@Controller
public class BookController {
    @RequestMapping("/showBooks")
    public String showBooks(Model bookModel){
        bookModel.addAttribute("bookAttribute", new BookDao());
        return "book/book-list";
    }
}

我想通过控制器中创建的模型访问jsp中的“listBooks”。我在想jstl,但我无法相应地编写代码。

答案

你可以使用jstl核心标签<c:forEach>。如果你需要在你的列表上循环,你可以这样做:

在BookController中将列表传递给模型:

 model.addAttribute("bookList", yourList);

在JSP中:

...
<c:forEach items="${bookList}" var="book"> 
${book.id}  <%-- BookBean fields that you want print out--%>
${book.title}
<%-- another fields --%>
</c:forEach>
...

see official oracle documentation for more detail

另一答案

在JSP页面上,只需执行以下操作:

<%
   out.println(listBooks.get(0).getId()); ->display id of first row
   out.println(listBooks.get(0).getTitle()); ->display title of first row
   out.println(listBooks.get(0).getAuthor());
%>

以上是关于如何在jsp中显示java中的ArrayList项?的主要内容,如果未能解决你的问题,请参考以下文章

在java中将Arraylist值从servlet传递到JSP?

如何使用 JSTL 显示在 JSP 本身中定义的 ArrayList 的值

解决一下如何在jsp页面中获取ArrayList的值

如何将 ArrayList 从 Java 类传递给 jsp

如何按照使用java的确切顺序计算ArrayList<Integer>中的重复项[重复]

将 Java 文件中的 ArrayList 值映射到 JSP 文件中的 HTML 对象