java - 我如何检查在同一个jsp页面中提交的jsp表单请求? (加密类型 ="multipart/form-data")

标签 java jsp post file-upload request

<%
..... 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/

相关文章:

javascript - jQuery 1.4.4+ AJAX 请求 - 发布空数组或对象成为字符串

Java - 如何编写自己的异常来查找特定错误

java - Java Servlet(JSP),内部服务器错误

java - Apache HTTPD 服务器间歇性地从发布数据中删除单个项目

java - 起始标签 <td> 未关闭?

java - 如何从类中调用 servlet

java - POST 请求中的 %5B 和 %5D 代表什么?

java - 在安卓上创建一个文件

java - 在 SharedPreferences 中保存对象并使用 GSON 从 Android Studio 中的 Activity 中读取该对象

JavaPOET - 只有类有父类(super class),而不是 INTERFACE