Class file for javax.servlet.http.HttpServletRequest not found, "cannot access HttpServletRequest"

4.8k views Asked by At

The code below is for servlet file-upload, I got it from a servlet tutorial but when I try to compile it, this error is thrown ->

UploadServlet.java:28: error: cannot access HttpServletRequest
        isMultipart = ServletFileUpload.isMultipartContent(req);
                                       ^
  class file for javax.servlet.http.HttpServletRequest not found
UploadServlet.java:49: error: no suitable method found for parseRequest(jakarta.servlet.http.HttpServletRequest)
            List fileItems = upload.parseRequest(req);
                                   ^
    method FileUploadBase.parseRequest(RequestContext) is not applicable
      (argument mismatch; jakarta.servlet.http.HttpServletRequest cannot be converted to RequestContext)
    method ServletFileUpload.parseRequest(javax.servlet.http.HttpServletRequest) is not applicable
      (argument mismatch; jakarta.servlet.http.HttpServletRequest cannot be converted to javax.servlet.http.HttpServletRequest)
2 errors



package fileUpload;

import jakarta.servlet.*;
import jakarta.servlet.http.*;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.*;

import java.io.*;
import java.util.*;

public class UploadServlet extends HttpServlet {
    private boolean isMultipart;
    private String filePath;
    private int maxFileSize=50 * 1024;
    private int maxMemSize = 4 * 1024;
    private File file;

    @Override
    public void init() throws ServletException {
         filePath = getServletContext().getInitParameter("file-upload");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        isMultipart = ServletFileUpload.isMultipartContent(req);
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        if (!isMultipart){
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Upload</title>");
            out.println("<body>");
            out.println("<p> No file Uploaded. </p>");
            out.println("</body>");
            out.println("</head>");
            out.println("</html>");
            return;
        }
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(maxMemSize);
        factory.setRepository(new File("/user/temp"));
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setSizeMax(maxFileSize);

        try {
            List fileItems = upload.parseRequest(req);
            Iterator i = fileItems.iterator();

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Upload</title>");
            out.println("<body>");

            while (i.hasNext()){
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()){
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    String contentType = fi.getContentType();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInByte = fi.getSize();

                    if (fileName.lastIndexOf("\\") >= 0){
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                    }else {
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")+1));
                    }
                    fi.write(file);
                    out.println("Uplaoded FileName "+ fileName+"<br/>");
                }
            }
            out.println("</body>");
            out.println("</html>");
        }
        catch (FileUploadException e) { e.printStackTrace(); }
        catch (Exception e){e.printStackTrace();}
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        throw new ServletException("Get method used with "+getClass().getName()+": POST method required.");
    }
}

I have added all the following jar files in the classpath

  1. commons-fileupload-1.4.jar
  2. commons-io-2.11.0.jar
  3. jsp-api.jar
  4. servlet-api.jar

I have also tried a different example from a different tutorial but still I got the same error. I have did all I can in four days but still I have failed. Please, may someone help me.

0

There are 0 answers