3

重要な質問がありますが、英語をお詫びします。基本的なことしか知りません。私の問題は、サーブレットからjspページにArrayListを渡すときにエラーが発生することです。

<% 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++){ %>

私が間違っているのは何ですか?また、私のサーブレットメソッドは次のようになります。

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 ではスクリプトレットを使用しないでください。JSP では EL とタグを使用する必要があります。

例えば

${listado}
于 2012-11-02T01:37:14.753 に答える
2

requestからの取得中に object に変数を設定していますがsession、存在しないため、問題が発生しています。

以下のように属性を設定してdoPostいます」:

 request.setAttribute("listado", listado);

以下のように、JSP で属性を取得しています」:

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

同じスコープsessionまたはrequest両方で使用してください。

于 2012-11-02T01:38:28.197 に答える
1

scriptletsajsp ページでの使用はお勧めしませんJSTL tags。代わりに使用してください。c-foreach tagjsp ページで arrayList を反復処理するために使用します。リクエストスコープで属性を設定し、それをjspのセッションスコープで取得しようとしています。

c-foreachタグを説明するリンクはこちら

于 2012-11-02T01:37:08.683 に答える
1

リクエストスコープに値を設定しています

  request.setAttribute("listado", listado);

しかし、セッションスコープでアクセスしようとしています。

 session.getAttribute("listado");

このため、null ポインター例外が発生する可能性があります。

 u.size()...

リクエストスコープでアクセスしてみてください

 request.getAttribute("xxxxxx") 

JSP 内に Java コードを追加しないようにしてください。これは悪い習慣です。代わりに EL と JSTL を使用してください。コード内のキャスト部分にもできます..

于 2012-11-02T01:41:53.193 に答える