<%
..... code to check request is submitted or not ...
%>
<form method="post" action="" name="uploadform" enctype="multipart/form-data">
<table >
<tr>
<td>Select up to 3 files to upload</td>
</tr>
<tr>
<td>
<input type="hidden" name="newFileName" value="newUploadedFileName1">
<input type="file" name="uploadfile" >
</td>
</tr>
<tr>
<td align="center">
<input type="submit" name="Submit" value="Upload">
<input type="reset" name="Reset" value="Cancel">
</td>
</tr>
</table>
</form>
用于上传文件的 jsp post 请求代码将在 <% .. %> 标记中的上述同一页面中。
我如何添加一个带有 if 语句的检查来检查提交按钮是否被点击,换句话说,是否发送了一个发布请求。
我关注了这个,http://www.java2s.com/Code/Java/JSP/SubmittingCheckBoxes.htm但它没有帮助,那就是调用不在同一页面中的不同 jsp 文件(“formAction.jsp”)。
if(request.getParameter("newFileName") != null) {
此语句始终给出空值。我不知道为什么。
注意:是有这个属性的表单 => enctype="multipart/form-data"
如果我不添加任何if语句那么文件是第一次上传,但是下次如果我点击重新加载按钮或刷新页面,浏览器会提示我重新发送数据或重新上传以前的文件.我希望你已经理解了这个问题。如果对理解问题有任何困惑,请发表评论。
谁能给出一些提示/解决方案?
最佳答案
当使用 multipart/form-data
时,请求以不同于标准 application/x-www-form-urlencoded
编码的编码发送,getParameter()
和 consorts 是依赖。这就是它们都返回 null
的原因。在能够确定提交的值之前,您需要将 multipart/form-data
请求解析为合理的对象。为此通常使用 Apache Commons FileUpload 或 request.getParts()
。有关更多详细信息,请查看 this answer .
或者,您也可以只检查请求方法。一个正常的请求(链接、书签等)总是 GET。用于上传文件的表单提交始终为 POST。
if ("POST".equalsIgnoreCase(request.getMethod())) {
// Form was submitted.
} else {
// It was likely a GET request.
}
但这在 JSP 中没有任何意义。在 JSP 文件中写下原始 Java 代码会导致维护麻烦。而是将表格提交给一个完全有值(value)的 servlet并且只实现 doPost()
方法。在 servlet 中,您可以自由编写 Java 代码,而无需考虑所有 HTML。
关于java - 我如何检查在同一个jsp页面中提交的jsp表单请求? (加密类型 ="multipart/form-data"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992645/