将ArrayList从Servlet传递给JSP时出错

时间:2012-11-02 01:32:55

标签: java mysql jsp servlets arraylist

我有一个重要的问题,但对我的英语很抱歉,我只知道基本的。我的问题是我有一个错误将一个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 个答案:

答案 0 :(得分:1)

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

e.g。

${listado}

答案 1 :(得分:0)

不建议在ajsp页面中使用

scriptlets,而是使用JSTL tags。使用c-foreach tag迭代jsp页面中的arrayList。并且您在请求范围中设置属性并尝试在jsp中的会话范围内获取它。

heres the link 解释了c-foreach标记

答案 2 :(得分:0)

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

您要在doPost中设置属性,如下所示:

 request.setAttribute("listado", listado);

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

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

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

答案 3 :(得分:0)

您要将值设置为请求范围

  request.setAttribute("listado", listado);

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

 session.getAttribute("listado");

由于这个原因,你可能会在

中得到一个空指针异常
 u.size()...

尝试在请求范围内访问它

 request.getAttribute("xxxxxx") 

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