2
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Add new product</title>
            <link type="text/css" rel="Stylesheet" href="css/SiteStyle.css" />
            <script src="js/jquery-1.3.2.js" type="text/javascript"></script>
    </head>
    <body>
         <form id="MainForm" action="Relay" method="post" enctype="multipart/form-data">
            <input name="destination"  type="hidden" value="AddNewProduct" />
             <script src="js/AddNewProduct.js" type="text/javascript"></script>
            <center>
                <h1>Add new product</h1>
            <hr />
        <table class="TableLogin">
            <tr>
                <td align="center" colspan="2" class="TDLoginHeader">
                        Product information</td>
            </tr>
            <tr>
                <td align="right" class="TDLoginTitle">
                        Product Title
                </td>
                <td align="left" class="TDLoginText">
                    <input id="TxtTitle" type="text" class="LoginTextBoxes" name="Title" maxlength="75" /></td>
            </tr>
            <tr>
                <td align="right" class="TDLoginTitle">
                        Dollar price
                </td>
                <td align="left" class="TDLoginText">
                    <input id="TxtPrice" type="text"  class="LoginTextBoxes" name="Price" maxlength="15" /></td>
            </tr>
            <tr>
                <td align="center" colspan="2" class="TDLoginTitle">
                    Product number</td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                    <table style="width:100%;">
            <tr>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit1' name='Txtdigit1' class='TxtProductNumber' type='text' />
               </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit2' name='Txtdigit2' class='TxtProductNumber' type='text' />
                </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit3' name='Txtdigit3' class='TxtProductNumber' type='text' />
                </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit4' name='Txtdigit4' class='TxtProductNumber' type='text' />
                </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit5' name='Txtdigit5' class='TxtProductNumber' type='text' />
                </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigi6' name='Txtdigit6' class='TxtProductNumber' type='text' />
                </td>
                <td align='center' class='TDProductNumber'>
                    <input id='Txtdigit7' name='Txtdigit7' class='TxtProductNumber' type='text' />
                </td>
            </tr>
            <tr>
                <td colspan="7" class="TDLoginTitle">
                    <label>Product Image</label>
                        <input id="ProductImage" name="ProductImage" type="file" />
                </td>
            </tr>
          </table>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                      <input id="BtnAdd" type="button" value="Add" class="BtnSize" /></td>
            </tr>
        </table>
        <div id="DivAddMessage">
        </div>
        <div>
           <a href='Login.jsp'>Back</a>
        </div>
        </center>
        </form>
    </body>
</html>

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 我知道这是因为多部分请求,但我怎么能得到这个值和文件上传的值?

4

2 回答 2

2

由于您使用多部分编码('multipart/form-data')发布,因此参数未按预期显示。

例如,如果您使用的是commons-fileupload,则参数将显示为并且可以使用 FileItem 对象上的“isFormField”方法进行识别。

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

大多数(每一个)现代网络框架都将这一点抽象出来,顺便让这类事情变得更容易。 参考这个网站它会帮助你

代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
        List<FileItem> 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);
    }

    // ...
}
于 2012-11-10T10:27:29.997 回答
2

使用注解

@MultipartConfig

为您的 Servlet

于 2012-11-10T10:46:36.610 回答