您可以通过隐式${param}变量访问请求参数。
例如http://example.com/context/page.jsp?foo=bar结合
<c:if test="${param.foo == 'bar'}">
The foo's param value is bar!
</c:if>
<c:if test="${param.foo != 'bar'}">
The foo's param value is not bar, it is: ${param.foo}
</c:if>
将显示第一个条件。
如果您确实想在后续请求中保留一些隐藏的输入元素(在您的问题中并没有真正明确),那么您基本上需要做的就是:
<input type="hidden" name="foo" value="${param.foo}">
更新:根据您的更新:您还需要为输入元素指定一个名称。因此,例如
<input type="text" name="id1" value="${param.id1}" />
这样,request.getParameter("id1") 和 ${param.id1} 都可以使用它。你现在看到了吗?
更新 2:根据您在此处的评论:当然这与 enctype="multipart/form-data" 有关。使用这种编码,请求参数不再在参数映射中,而是在请求正文中,因为与二进制数据(文件上传)混合。解释这一切将是一个很长的故事,但基本上你需要自己解析请求。如果您使用的是 Servlet 2.5 或更早版本,那么 Apache Commons FileUpload 在这里非常有用。请特别阅读那里的“用户指南”和“常见问题解答”以查看代码示例并了解如何正确使用它(也在 MSIE 中!)。您甚至可以决定将 FileUpload 抽象出来,以便您可以照常使用HttpServletRequest#getParameter() 和${param},另请参阅this article。
如果您已经在使用 Servlet 3.0,那么您可以使用 HttpServletRequest#getParts()。您甚至可以将其抽象出来,以便您可以照常使用HttpServletRequest#getParameter() 和${param},另请参阅this article。
更新 3: 哦,你真的不想使用 JSP 来做所有的处理。这不是为了。现在是学习Servlet 的时候了。此外,当使用 Filter 将请求正文中的所有参数放回请求参数映射时(如两篇文章中所述),您也不一定需要 Servlet。