如何将会话值作为请求参数从JSP传递给servlet?

时间:2011-11-23 02:31:28

标签: java jsp servlets

<c:forEach var="it" items="${sessionScope.projDetails}">
    <tr>
        <td>${it.pname}</td>
        <td>${it.pID}</td>
        <td>${it.fdate}</td>
        <td>${it.tdate}</td>
        <td> <a href="${it.address}" target="_blank">Related Documents</a></td>
        <td>${it.pdesc}</td>
        <form name="myForm" action="showProj">
            <td><input id="button" type="submit" name="${it.pID}" value="View Team">
            </td>
        </form>
</c:forEach>

参考上面的代码,我从一些servlet获取会话对象projDetails,并在JSP中显示其内容。由于arraylist projDetails有多个记录,因此字段pID也会采用不同的值,并且显示将是一个包含多行的表。
现在,当用户基于该行的“pID”点击“View Team”(将在每一行中)时,我想调用一个servlet showProj。 有人可以告诉我如何将用户点击JSP的特定pID传递给servlet吗?

3 个答案:

答案 0 :(得分:3)

而不是每个不同的pID <input>,您可以使用链接将pID作为查询字符串传递给servlet,如:

<a href="/showProj?pID=${it.pID}">View Team</a>

showProj servlet代码中,您将通过request方法中的doGet对象访问查询字符串,如:

public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    String pID = request.getParameter("pID");
    //more code...
}

以下是Java servlet的一些参考:

HttpServletRequest object
Servlet tutorials

答案 1 :(得分:1)

pID传递给隐藏的输入字段。

<td>
    <form action="showProj">
        <input type="hidden" name="pID" value="${it.pID}">
        <input type="submit" value="View Team">
    </form>
</td>

(请注意,我使用<form>重新排列<td>以使其成为有效的HTML,我也从按钮中删除了id,因为它在HTML中无效多个元素具有相同的id

这样你就可以按如下方式在servlet中获取它:

String pID = request.getParameter("pID");
// ...

答案 2 :(得分:-1)

在按钮上定义onclick功能并传递参数

<form name="myForm" action="showProj">
       <input type='hidden' id='pId' name='pId'>
       <td><input id="button" type="submit" name="${it.pID}" value="View Team" onclick="populatePid(this.name)">
       </td>
.....

定义javascript函数:

function populatePid(name) {
  document.getElementById('pId') = name;
}

并在servlet中:

public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException
{
    String pID = request.getParameter("pId");
    .......
}