Java 如何将会话值作为请求参数从JSP传递到servlet? ${it.pname} ${it.pID} ${it.fdate} ${it.tdate} ${it.pdesc}

Java 如何将会话值作为请求参数从JSP传递到servlet? ${it.pname} ${it.pID} ${it.fdate} ${it.tdate} ${it.pdesc},java,jsp,servlets,Java,Jsp,Servlets,参考上面的代码,我从某个servlet获取会话对象projDetails,并在JSP中显示其内容。由于arraylistprojDetails有多条记录,因此字段pID也采用不同的值,并且显示的是一个包含多行的表格。 现在,当用户基于该行的“pID”单击“查看团队”(将位于每一行)时,我想调用servletshowProj。 有人能告诉我如何将用户在JSP上单击的特定pID传递给servlet吗?对于每个不同的pID,您可以使用链接将pID作为查询字符串传递给servlet,类似于: <a

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

对于每个不同的pID,您可以使用链接将pID作为查询字符串传递给servlet,类似于:

<a href="/showProj?pID=${it.pID}">View Team</a>
public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    String pID = request.getParameter("pID");
    //more code...
}
以下是Java servlet的一些参考资料:


对于每个不同的pID,您可以使用链接将pID作为查询字符串传递给servlet,类似于:

<a href="/showProj?pID=${it.pID}">View Team</a>
public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException
{
    String pID = request.getParameter("pID");
    //more code...
}
以下是Java servlet的一些参考资料:



在按钮上定义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>
.....
在servlet中:

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

在按钮上定义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>
.....
在servlet中:

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

在隐藏的输入字段中传递
pID


(请注意,我用
重新排列了
,使其成为有效的HTML,并且我还从按钮中删除了
id
,因为在HTML中具有相同
id
的多个元素是无效的。)

通过这种方式,您可以在servlet中获得它,如下所示:

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

在隐藏的输入字段中传递
pID


(请注意,我用
重新排列了
,使其成为有效的HTML,并且我还从按钮中删除了
id
,因为在HTML中具有相同
id
的多个元素是无效的。)

通过这种方式,您可以在servlet中获得它,如下所示:

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

我尝试了上面的代码,但它说“请求的资源不可用”,即使给出了servlet的完整URL,我怀疑我们是否通过JSP中的“href”访问servlet??您当然可以通过常规的
访问servlet。我的第一个想法是,您没有在web.xml中设置
。有很多问题需要解决,或者在我上面提供的第二个链接中看到“Servlet基础”,它涉及“将url提供给Servlets”现在可以了,我只是在“hello”中加了一个“.”。在类似的情况下,我想将完整列表传递给url,例如。在本例中,传递项目详细信息属性本身。我可以将列表本身作为参数附加到url中吗?我尝试了上面的代码,但它说“请求的资源不可用”,即使给出了servlet的完整url,我怀疑我们是否可以通过JSP中的“href”访问servlet??您当然可以通过常规的
访问servlet。我的第一个想法是,您没有在web.xml中设置
。有很多问题需要解决,或者在我上面提供的第二个链接中看到“Servlet基础”,它涉及“将url提供给Servlets”现在可以了,我只是在“hello”中加了一个“.”。在类似的情况下,我想将完整列表传递给url,例如。在本例中,传递项目详细信息属性本身。我可以将列表本身作为参数附加到url中吗?我尝试了上面的代码,但servlet中的“pID”包含“null”,只是想指出,尽管不确定这是否是一个问题,但确实需要处理变量名。“hidden”的“name”属性应该是您应该在servlet中使用的属性,以获取在上述情况下为“pId”的值。最后,当您提交表单时,您将看到url中填充了请求参数,例如xxx.com?pId=abc。如果发生这种情况,则可以确定servlet将在名称pId下获得值abc。如果没有发生这种情况,那么HTML/JS代码就会出现问题。当我提交表单“/showProj?pId=&445=View+Team”时,我得到了这个问题,我已经将“字符串pId=request.getParameter(“pId”);”放在受保护的void processRequest(HttpServletRequest-req,HttpServletResponse-response)中,抛出ServletException,IOException{String pID=req.getParameter(“pID”);…}我得到的pID为空..在您的评论之后,我尝试将“String pID=request.getParameter(“pID”);”放在受保护的void doGet(HttpServletRequest-req,HttpServletResponse)内,抛出ServletException,IOException{String pID=req.getParameter(“pID”)…},我得到“java.lang.IllegalStateException:提交响应后无法转发”'/showProj?pId=&445=View+Team'显示没有为pId发送值。您需要检查html/JS代码,了解为什么会发生这种情况。我尝试使用上述代码,但servlet中的“pId”包含“null”"我只想指出,虽然不确定这是否是一个问题,但确实需要注意变量名。“hidden”的“name”属性应该是您应该在servlet中使用的一个属性,以获取值,在上述情况下是“pId”。最后,当您提交表单时,您会看到url中填充了请求参数,例如xxx.com?pId=abc。如果发生这种情况,则可以确定servlet将在名称pId下获取值abc。如果没有发生这种情况,则HTML/JS代码存在问题。我在提交表单“/showProj?pId=&445=View+Team”时得到了这一点,我已将“字符串pId=request.getParameter(“pId”);”放在受保护的void processRequest中(HttpServletRequest-req,HttpServletResponse-response)抛出ServletException,IOException{String pID=req.getParameter(“pID”)。。。。。