从动态jsp表中获取值

时间:2013-03-15 14:20:13

标签: jsp dynamic html-table

我有一个动态生成数据库值的表。 list 变量是某个Object

的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>

我想要的是捕获按下按钮的某一行的用户名并将其传递给servlet。

1 个答案:

答案 0 :(得分:1)

只需借助隐藏的输入元素将其作为附加请求参数传递。

E.g。

<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 attacks也很敏感。 Java / JSP scriptlet 没有内置工具来防止这种情况发生。考虑使用JSTL <c:forEach>迭代列表和fn:escapeXml()以逃避用户控制的数据以防止XSS攻击漏洞。

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

另见: