Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsp中同一会话变量的多个值_Jsp_Session - Fatal编程技术网

jsp中同一会话变量的多个值

jsp中同一会话变量的多个值,jsp,session,Jsp,Session,我的代码生成一个表,每行生成一个更新和删除按钮。当按下“更新”或“删除”按钮时,相对行的编号应保存为会话变量,但只保存最后一行的编号。不过,这种方法在php中也可以使用。我试图通过html中的“onclick”属性来分配会话变量,但它也不起作用。我理解原因,并试图找到解决方法 <% while(result.next()){ %> <tr> <td><%out.print("

我的代码生成一个表,每行生成一个更新和删除按钮。当按下“更新”或“删除”按钮时,相对行的编号应保存为会话变量,但只保存最后一行的编号。不过,这种方法在php中也可以使用。我试图通过html中的“onclick”属性来分配会话变量,但它也不起作用。我理解原因,并试图找到解决方法

    <%
            while(result.next()){
    %>
        <tr>
            <td><%out.print("<p>"+result.getInt(1)+"</p>"); %></td>
            <td><%out.print("<p>"+result.getString(2)+"</p>"); %></td>
            <td><%out.print("<p>"+result.getString(3)+"</p>"); %></td>
            <td><%out.print("<p>"+result.getString(4)+"</p>"); %></td>
            <td><%out.print("<p>"+result.getString(5)+"</p>"); %></td>
            <td><%out.print("<p>"+result.getInt(6)+"</p>"); %></td>
            <td>
                <form action="DeleteUserServlet" method="POST">
                <input type="submit" value="Delete" 
                onclick="<%session.setAttribute("id",result.getInt(1));%>">
                </form>                     
                <form action="UpdateUser.jsp" method="POST">
                <input type="submit" value="Update" onclick="
                <%session.setAttribute("id",result.getInt(1));%>">
                </form>
            </td>
        </tr>
    <%
        }
    %>

您需要在表单中使用隐藏输入,而不是试图通过设置会话变量来实现这一点

<%
while(result.next())
{
%>
<tr>
    <td><% out.print("<p>"+result.getInt(1)+"</p>"); %></td>
    <td><% out.print("<p>"+result.getString(2)+"</p>"); %></td>
    <td><% out.print("<p>"+result.getString(3)+"</p>"); %></td>
    <td><% out.print("<p>"+result.getString(4)+"</p>"); %></td>
    <td><% out.print("<p>"+result.getString(5)+"</p>"); %></td>
    <td><% out.print("<p>"+result.getInt(6)+"</p>"); %></td>
    <td>
    <form action="DeleteUserServlet" method="POST">
      <input type="hidden" name="id" value="<% out.print(result.getInt(1)); %>" />
      <input type="submit" value="Delete" />
    </form>                     
    <form action="UpdateUser.jsp" method="POST">
      <input type="hidden" name="id" value="<% out.print(result.getInt(1)); %>" />
      <input type="submit" value="Update" />
    </form>
    </td>
</tr>
<%
}
%>


为什么你所做的不起作用?所有Java代码都在服务器端运行,因此,即使您放置了类似
的内容,设置会话属性的Java代码也会在HTML页面发送到浏览器之前运行,而不是在用户单击该按钮时运行。因此,您的代码实际执行的是在循环中的over上设置session属性,结果发送到客户端的HTML的onClick值为空:

*生成了更新和删除按钮为什么不在DeleteUserServlet中执行此操作?这就是我要做的,我的问题是,当我单击更新或删除按钮时,会话变量将不会设置为其各自的id号,它将设置为最后一个id号。因此,无论选择哪一行的“删除”按钮,它都会删除最后一行。您想做什么?我找到了一个解决方案(thanx for the help:),因为当jsp文件得到处理时,它会转换为servlet,我认为代码是自上而下运行的,所以无论我为变量设置了什么值,它都会得到上一次赋值的值。不管我找到了另一种方式,我都可以通过url发送id并通过doGet捕获它。感谢您对所有人的帮助:D@ruvinda虽然你可以这样做,但是为了删除/更新它,当然最好使用POST。