【问题标题】:Display an ArrayList on a jsp page在 jsp 页面上显示一个 ArrayList
【发布时间】:2015-04-02 10:28:24
【问题描述】:

我在 jsp 上有这个 CRUD(创建、读取、更新、删除)项目。我没有使用 Servlet,因为我只有一个我自己创建的表。 我在数据库中编写了有关显示所有用户的所有代码(visualizzaUtenti() 方法)。不过,我只是不知道如何在 jsp 脚本中调用该函数。与 jdbc 的连接在我的本地主机上运行良好:它位于一个名为 DBUtiliy 的封装类中。删除和插入查询也可以工作。任何人都可以帮忙吗?下面是我的代码。

public List<Utente> visualizzaUtenti() {
    List<Utente> utenti = new ArrayList<Utente>();
    try {
        Statement statement = connessione.createStatement();
        ResultSet rs = statement.executeQuery("SELECT * FROM tbldatiutenti");
        while (rs.next()) {
            Utente utente = new Utente();
            utente.setId(rs.getString("id"));
            utente.setNome(rs.getString("nome"));
            utente.setCognome(rs.getString("cognome"));   
            utente.setEmail(rs.getString("email"));
            utente.setGenere(rs.getString("genere"));
            System.out.println("Visualizzazione effettuata");
            utenti.add(utente);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return utenti;
}

提前致谢。

【问题讨论】:

  • 我不确定我是否理解正确。您想知道如何在 JSP 中调用 visualizzaUtenti() 函数吗?
  • 是的。我想调用它(对不起我的英语)并在我的 jsp 上显示所有结果。

标签: java list jsp select arraylist


【解决方案1】:

最佳实践是在 JSP 中使用 servlet 而不是使用 scriptlet,您将执行以下操作:

@WebServlet(name = "SampleServlet", urlPatterns = {"/sample"})
public class SampleServlet extends HttpServlet {

//your visualizzaUtenti() method code goes here

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
 request.setAttribute("utenti", visualizzaUtenti());
 RequestDispatcher dispatcher = request
                   .getRequestDispatcher("/YourJSPPage.jsp");  
   if (dispatcher != null){  
      dispatcher.forward(request, response);  
   }
 }
}

在您的 JSP 中,您可以执行以下操作:

<table>
  <tr><th>Id</th> <th>Nome</th> <th>Cognome</th> <th>Email</th> <th>Genere</th></tr>
  <c:forEach var="utente" items="${utenti}">
    <tr>
      <td><c:out value="${utente.id}" /></td>
      <td><c:out value="${utente.nome}" /></td>
      <td><c:out value="${utente.cognome}" /></td>
      <td><c:out value="${utente.email}" /></td>
      <td><c:out value="${utente.genere}" /></td>
    </tr>
  </c:forEach>
</table>

【讨论】:

    【解决方案2】:

    将 JSTL 核心库用于 c:forEach 标记,稍后您将在示例中看到。

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    

    做需要的导入

    <%@page import="java.util.List"%>
    <%@page import="your.package.DBUtiliy"%>
    <%@page import="your.package.Utente"%>
    
    <%
        // make an object of the class
        DBUtiliy dbUtiliy= new DBUtiliy();
        List<Utente> listOfUtente= dbUtiliy.visualizzaUtenti();
    %>
    

    然后你只需要遍历项目

    <div>
            <ul>
                <c:forEach items="<%=listOfUtente%>" var="utente">
    
                    <li>${utente.someProperty}</li>
    
                </c:forEach>
            </ul>
        </div>
    

    【讨论】:

      【解决方案3】:

      在发布此类问题之前,请您自己进行一些搜索,有许多现成的解决方案。

      如下使用 jsp:useBean 和 c:forEach 循环并在 setUtenti() 中初始化 bean 值,

      <jsp:useBean id="ClassList" scope="page" class="ClassName" />
      <c:forEach var="title" items="${ClassList.utenti}">
       <c:out value="${title}" />
      </c:forEach>
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 2015-06-27
        • 2013-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多