Get parameter when multipart request in JSP

て烟熏妆下的殇ゞ 提交于 2019-12-29 09:07:11

问题


<%@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 'Relay' code:

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);
}

this is a piece of code for enter product inforamtion (title , price , 7 digit number, product image) , when i want to get 'destination' parameter in servlet the value got is null i know that because multipart request , but how i can get this value and the file uploaded value ?


回答1:


Since you post using multipart encoding ('multipart/form-data') the parameters are not present as you expect.

If for instance you are using commons-fileupload the parameters would be present as and are identifiable using the 'isFormField' method on the FileItem object.

This thead on coderanch explains how: coderanch

Most (every) modern webframeworks abstract this away and make this sort of stuff much easier by the way. Refer this site it will help you

CODE

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);
    }

    // ...
}



回答2:


use Annotation

@MultipartConfig

for your Servlet



来源:https://stackoverflow.com/questions/13321164/get-parameter-when-multipart-request-in-jsp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!