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 '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 ?

alaa joma
  • 41
  • 2
  • 2
  • 3
  • Check this question for details http://stackoverflow.com/questions/2422468/how-to-upload-files-to-server-using-jsp-servlet/2424824#2424824 It has all answers u have in details – Dev Nov 21 '14 at 09:39

2 Answers2

2

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

    // ...
}
Sathish
  • 4,403
  • 7
  • 31
  • 53
  • ok i will try this , but can i get 'destination' input value also? this is a multipart request !!! – alaa joma Nov 10 '12 at 10:33
  • ya you can do..... have a look at the code section i have updated in code block i have commented have a look at that – Sathish Nov 10 '12 at 10:43
  • what is the package name have 'FilenameUtils' ? – alaa joma Nov 10 '12 at 11:01
  • you need to download the supporting jar file from http://commons.apache.org/fileupload/download_fileupload.cgi and add it to library – Sathish Nov 10 '12 at 11:04
  • i have tried your code , but the JSP server raised HTTP Status 500 type: Status report message: description: The server encountered an internal error () that prevented it from fulfilling this request. – alaa joma Nov 10 '12 at 12:06
  • The error raised when executing this code : List items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); – alaa joma Nov 10 '12 at 12:07
2

use Annotation

@MultipartConfig

for your Servlet

laksys
  • 3,228
  • 4
  • 27
  • 38