我在模态中有以下形式:
<div id="sazModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="sazModalLabel" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3 id="sazModalLabel">Upload a Test</h3> </div> <div class="modal-body"> <form method=POST id='sazForm' class="form-horizontal" action="upload.jsp" enctype='multipart/form-data'> <div class="control-group"> <label class="control-label" for="inputEmail">Email</label> <div class="controls"> <input name="email" type="text" id="inputEmail" placeholder="Email"> </div> </div> <div class='control-group'> <label class='control-label' for='inputHost'>Test Server</label> <div class='controls'> <input name="hstnme" type='text' id='inputHost' placeholder='Hostname'> </div> </div> <div class='control-group'> <label class='control-label' for='inputPort'>Port Number</label> <div class='controls'> <input name="port" type='text' id='inputPort' placeholder='Port'> </div> </div> <div class="control-group"> <label class="control-label" for="fileUploadButton">Saz File</label> <div class="controls"> <input name="saz" type="file" id="fileUploadButton" placeholder="Saz File"/> </div> </div> <div id='modalfooter'> <input class="btn btn-success" type='submit' id='goButton' value="Go!"/> <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> </div> </form> </div> </div>
我希望将其发送到以下jsp(upload.jsp):
<%@ page import="java.io.*,java.util.*, javax.servlet.*"%> <%@ page import="javax.servlet.http.*"%> <%@ page import="org.apache.commons.fileupload.*"%> <%@ page import="org.apache.commons.fileupload.disk.*"%> <%@ page import="org.apache.commons.fileupload.servlet.*"%> <%@ page import="org.apache.commons.io.output.*"%> <% System.out.println(request.getParameter("hstnme")); Enumeration<String> paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); System.out.print(paramName + " : "); String paramValue = request.getHeader(paramName); System.out.println(paramValue); } %>
我遇到了参数无法正确传递的问题。我的System.out说:
null
就是这样。显然没有得到其他输入(电子邮件,hstnme和端口)。空值来自第一个.getParameter(“ hstnme”)
我以为主机名可能会受到某种保护,所以我将其更改为hstnme,但没有运气。我还注意到,当我使用commons.fileupload时,所有四个参数都放入FileItems中,但它们的值并未一起发送。
如何将表单中的参数传递给jsp并正确检索它们?
我建议您使用servlet来处理帖子,有很多方法可以做到,但是一个简单的方法就是使用Apache Commons FileUpload库。您只需要将JAR添加到您的项目中。
这是一个示例,它将获取您的信息并以HTML格式打印内容:
@WebServlet(urlPatterns = { "/file-upload" } ) public class FileUpload extends HttpServlet { @Override public void doPost(HttpServletRequest p_oRequest, HttpServletResponse p_oResponse) throws IOException { PrintWriter out = p_oResponse.getWriter(); out.println("<html><body>"); List fileItems = null; // Parsing field values DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(10000000); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax(10000000); try { // Parse the request to get file items. fileItems = upload.parseRequest(p_oRequest); // Process the uploaded file items Iterator i = fileItems.iterator(); out.println("<table><tr><td>Type</td><td>Name</td><td>Value</td>"); while(i.hasNext()) { FileItem fi = (FileItem)i.next(); out.println("<tr>"); if(fi.isFormField()) { out.println("<td>Field</td>"); out.println("<td>" + fi.getFieldName() + "</td>"); out.println("<td>" + fi.getString() + "</td>"); } else { out.println("<td>File</td>"); out.println("<td>" + fi.getFieldName() + "</td>"); out.println("<td>" + fi.getName() + " / " + fi.getContentType() + " / " + fi.getSize() + "</td>"); } out.println("</tr>"); } out.println("</table>"); } catch(Exception e) { e.printStackTrace(); } out.println("</body></html>"); out.flush(); } }
请注意,FileItem fi该对象是包含字段信息的对象。对于文件,您可以通过获取内容fi.getInputStream()或fi.getString()取决于获取方式以及获取多少数据等来获取文件的内容。
FileItem fi
fi.getInputStream()
fi.getString()