Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
210 views
in Technique[技术] by (71.8m points)

java - servlet not working in GWT

I am trying to work with servlet in GWT. and i found Error.

   No file found for: /uploadfile/uploadFileServlet

i want to browse a file and send it on the server side.

i went through many solution provided by the experts. But i am not able to find my mistake

some one plz help to solve it.

Client Side

package uploadfile.client;
public class Uploadfile implements EntryPoint {

    @SuppressWarnings("deprecation")
    public void onModuleLoad() {
        // TODO Auto-generated method stub
            final FormPanel uploadForm = new FormPanel(); 

            uploadForm.setAction(GWT.getModuleBaseURL() +"uploadFileServlet"); 

            uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART); 
            uploadForm.setMethod(FormPanel.METHOD_POST); 

            // Create a panel to hold all of the form widgets. 
            VerticalPanel panel = new VerticalPanel(); 
            uploadForm.setWidget(panel); 

            // Create a FileUpload widget. 
            FileUpload upload = new FileUpload(); 
            upload.setName("uploadFormElement"); 
            panel.add(upload); 

            // Add a 'submit' button. 
            Button uploadSubmitButton = new Button("Submit"); 
            panel.add(uploadSubmitButton); 
            uploadSubmitButton.addClickListener(new ClickListener() { 
              public void onClick(Widget sender) { 
                uploadForm.submit(); 
              } 
            }); 
            uploadForm.addFormHandler(new FormHandler() { 
              public void onSubmit(FormSubmitEvent event) { 
              } 
              public void onSubmitComplete(FormSubmitCompleteEvent event) { 
                Window.alert(event.getResults()); 
              } 
            }); 
            RootPanel.get().add(uploadForm); 
    }

}

Server side

package uploadfile.server;


public class UploadFileServlet extends HttpServlet implements Servlet 
{ 
   private static final long serialVersionUID = 8305367618713715640L; 

    protected void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
                        throws ServletException, IOException { 
  doPost(request, response);
 }

 protected void doPost(HttpServletRequest request, 
        HttpServletResponse response) 
                        throws ServletException, IOException { 

    response.setContentType("text/plain"); 
    FileItem uploadItem = getFileItem(request); 
    if (uploadItem == null) { 
            response.getWriter().write("NO-SCRIPT-DATA"); 
            return; 
    } 
    byte[] fileContents = uploadItem.get(); 
    //TODO: add code to process file contents here. We will just print 

    System.out.println(new String(fileContents)); 
    response.getWriter().write(new String(fileContents)); 
  } 

   private FileItem getFileItem(HttpServletRequest request) { 

  FileItemFactory factory = new DiskFileItemFactory(); 
  ServletFileUpload upload = new ServletFileUpload(factory); 
  try { 
      List items = upload.parseRequest(request); 
      Iterator it = items.iterator(); 
      while (it.hasNext()) { 
          FileItem item = (FileItem) it.next(); 
          if (!item.isFormField() 
                  && "uploadFormElement".equals(item.getFieldName())) { 
              return item; 
          } 
      } 
  } catch (FileUploadException e) { 
      return null; 
  } 
 return null; 
  } 
 } 

web.xml

  <?xml version="1.0" encoding="UTF-8"?>
 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>fileUploaderServlet</servlet-name>
<servlet-class>uploadfile.server.UploadFileServlet</servlet-class>
</servlet>
<!-- Servlets 
Default page to serve -->

<servlet-mapping>
<servlet-name>fileUploaderServlet</servlet-name>
<url-pattern>/uploadFileServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>Uploadfile.html</welcome-file>
 </welcome-file-list>
</web-app>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Am not a GWT developer so it could be different, i think your servlet action url is wrong. You are trying for a servlet with path /uploadfile/uploadFileServlet but your servlet is actually mapped to the url /uploadFileServlet.

One more thing, there is no need for you to implement Servlet if you are extending HttpServlet unless you have any specific reasons to do.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...