簡體   English   中英

如何在同一個jsp頁面中查看jsp表單請求提交? (ENCTYPE =“多部分/格式數據”)

[英]How can i check jsp form request submit in same jsp page? (enctype=“multipart/form-data”)

<%
..... 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) {

此語句始終為null值。 我不知道為什么。

注意:它是具有此屬性的表單=> enctype =“multipart / form-data”

如果我沒有添加任何if語句,那么文件將首次上載,但下次如果我單擊重新加載按鈕或刷新頁面,瀏覽器會提示我重新發送數據或重新上載以前的文件。 我希望你能理解這個問題。 如果有任何疑惑,請了解問題,請發表評論。

誰能提供一些提示/解決方案?

使用multipart/form-data ,請求的編碼方式與getParameter()和consorts所依賴的標准application/x-www-form-urlencoded編碼不同。 這就是為什么他們都返回null 在能夠確定提交的值之前,您需要將multipart/form-data請求解析為合理的對象。 為此,通常使用Apache Commons FileUpload或request.getParts() 有關詳細信息,請查看此答案

或者,您也可以檢查請求方法。 正常請求(鏈接,書簽等)始終是GET。 提交上傳文件的表單始終是POST。

if ("POST".equalsIgnoreCase(request.getMethod())) {
    // Form was submitted.
} else {
    // It was likely a GET request.
}

但這在JSP中沒有任何意義。 在JSP文件中編寫原始Java代碼是導致維護問題的原因。 而是將表單提交給一個完整的servlet,然后實現doPost()方法。 在servlet中,您可以自由編寫Java代碼,而無需考慮所有HTML。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM