3

我有一个重要的问题,但对我的英语感到抱歉,我只知道基本的。好吧,我的问题是我将 ArrayList 从 servlet 传递到 jsp 页面时出错:

<% ArrayList<Usuario> u= (ArrayList<Usuario>)session.getAttribute("listado");%>
<table align="left" cellpadding="0" cellspacing="1">
    <tr bgcolor="blue">
        <td>Usuario</td><td>Nombre</td>
        <td>Apellido</td><td>Clave</td> 
    </tr>
<% for(int i=0;i<u.size();i++){ %>
<% Usuario usuario = u.get(i); %>
<tr>
<td> <%= usuario.getUsuario() %></td>
<td> <%= usuario.getNombre() %></td>
<td> <%= usuario.getApellido() %></td>
<td> <%= usuario.getClave() %></td>
</tr>
<%} %>


</table>

这就是我这样做的方式,但我收到以下错误:

<% for(int i=0;i<u.size();i++){ %>

我做错了什么?我的servlet方法也是这样的:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    RequestDispatcher rd;

    try {
        Connection cn = MySQLConnection.obtenerConexion();
        String sql = "select * from tb_usuario";
        PreparedStatement ps = cn.prepareStatement(sql);
        ResultSet rs = ps.executeQuery();
        ArrayList<Usuario> listado = new ArrayList<Usuario>();
        while (rs.next()){
            Usuario usu = new Usuario(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4));
            listado.add(usu);
        }
        request.setAttribute("listado", listado);
        request.getRequestDispatcher("/listado.jsp");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

我希望你能帮助我!

4

4 回答 4

3

您不应该在 JSP 中使用 scriptlet。您应该在 JSP 中使用 EL 和标签。

例如

${listado}
于 2012-11-02T01:37:14.753 回答
2

您在request从 检索时在对象中设置变量session,因此该问题不存在。

您正在将属性设置doPost如下“:

 request.setAttribute("listado", listado);

您正在检索 JSP 中的属性,如下所示:

 <% ArrayList<Usuario> u= (ArrayList<Usuario>)session.getAttribute("listado");%>

请使用相同的范围sessionrequest在两个地方使用。

于 2012-11-02T01:38:28.197 回答
1

scriptlets不鼓励在 ajsp 页面中使用,请JSTL tags改用。用于c-foreach tag在您的jsp 页面中迭代您的arrayList。并且您正在请求范围内设置一个属性,并尝试在您的 jsp 的会话范围内获取它。

这是解释 c-foreach 标签的链接

于 2012-11-02T01:37:08.683 回答
1

您正在将值设置为请求范围

  request.setAttribute("listado", listado);

但随后尝试在会话范围内访问它。

 session.getAttribute("listado");

由于这个你可能会得到一个空指针异常

 u.size()...

尝试在请求范围内访问它

 request.getAttribute("xxxxxx") 

尽量避免在 JSP 中添加 java 代码,这是一种不好的做法。请改用 EL 和 JSTL。你也可以到代码中的铸造部分..

于 2012-11-02T01:41:53.193 回答