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

标签 java mysql jsp jstl

我生成了一个数组列表,我在其中逐行从数据库中获取项目。我想在jsp中显示值,但不知道如何将jsp绑定(bind)到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";
    }
}

我想通过 Controller 中创建的模型访问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

关于java - 如何在jsp中显示java中的ArrayList项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55664560/

相关文章:

java - 将单个字节转换为字符串并返回字节

mysql - NodeJS Mysql 计数查询用于记录检查

java - 自定义 html <display :column></display:cloumn>

java - 为什么从请求中获取第一个参数是错误的?

javascript - Uncaught ReferenceError : bTitle is not defined

java - 通过 POST 正文发送复杂对象(带有 Map)- JSON

java - Google map api v3 - 多个标记、多个信息窗口、3 个图标

java - ArrayList 迭代器抛出 ConcurrentModificationException

mysql - 选择最新的 100 篇文章的 sql 查询,然后按最高评分顺序返回该结果的 30 篇文章

php - 'where clause' 中的未知列,而列已存在