在JSP中的多部分请求时获取参数

    Add new product     

Add new product


Product information
Product Title
Dollar price
Product number

Servlet’中继’代码:

 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String destination=request.getParameter("destination"); out.print(destination); } 

这是输入产品信息的一段代码(标题,价格,7位数,产品图像),当我想在servlet中获取’destination’参数时,得到的值为null我知道因为多部分请求,但我怎么能获取此值和文件上传值?

由于您使用多部分编码(’multipart / form-data’)发布,因此参数不会按预期存在。

例如,如果您使用的是commons-fileupload,则参数将以FileItem对象上的’isFormField’方法存在并可识别。

这个关于coderanch的thead解释了如何: coderanch

大多数(每个)现代webframeworks都将它抽象出来,顺便说一下,这样的东西会变得更容易。 请参阅此网站,它将为您提供帮助

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { List items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); for (FileItem item : items) { if (item.isFormField()) { // Process regular form field (input type="text|radio|checkbox|etc", select, etc). String fieldname = item.getFieldName(); String fieldvalue = item.getString(); // ... (do your job here) } else { // Process form file field (input type="file"). String fieldname = item.getFieldName(); String filename = FilenameUtils.getName(item.getName()); InputStream filecontent = item.getInputStream(); // ... (do your job here) } } } catch (FileUploadException e) { throw new ServletException("Cannot parse multipart request.", e); } // ... } 

使用注释

@MultipartConfig

为你的Servlet