2

データベースから値を動的に生成するテーブルがあります。リスト変数は、いくつかのオブジェクトのarrayListです。

 <table border="1">
                     <tr>
                        <th>Username</th>
                        <th>Full Name</th>
                        <th>Status</th>
                        <th>Action</th>
                     </tr>

                        <%for(int x = 0; x <list.size(); x++) {%>
                        <tr>
                        <td><% out.println(list.get(x).getUsername()); %></td>
                        <td><%out.println(list.get(x).getFirstname() + list.get(x).getMiddleinitial() + list.get(x).getLastname());%></td>
                         <td><% out.println(list.get(x).getStatus()); %></td>
                          <td> 
                              <form action="ViewManager" method="POST">
                                   <input id="button" type="submit" value="View" >
                              </form>
                              <form action="LockManager" method="POST">
                                   <input id="button" type="submit" value="Lock" >
                              </form>
                              <form action="DeleteManager" method="POST">
                                   <input id="button" type="submit" value="Delete" >
                              </form>

                          </td>
                        </tr>
                        <% }%>


                    </table>

私が欲しいのは、ボタンを押した場所の特定の行のユーザー名をキャプチャして、サーブレットに渡すことです。

4

1 に答える 1

1

非表示の入力要素を使用して、追加のリクエストパラメータとして渡すだけです。

例えば

<form action="ViewManager" method="POST">
    <input type="hidden" name="username" value="<%= list.get(x).getUsername() %>" />
    <input id="button" type="submit" value="View" >
</form>

それはとして利用可能です

String username = request.getParameter("username");

具体的な問題とは関係なく、これは昔ながらのJSPの書き方です。上記のアプローチは、XSS攻撃にも敏感です。Java / JSPスクリプトレットには、これを防ぐための機能が組み込まれていません。JSTL を使用<c:forEach>してリストを反復処理し、fn:escapeXml()ユーザーが制御するデータをエスケープしてXSS攻撃ホールを防ぐことを検討してください。

<c:forEach items="${users}" var="user">
    ...
    <input type="hidden" name="username" value="${fn:escapeXml(user.username)}" />
    ...
</c:forEach>

参照:

于 2013-03-15T14:25:24.967 に答える