сервлет не работает в GWT - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь работать с сервлетом в GWT.и я обнаружил ошибку.

   No file found for: /uploadfile/uploadFileServlet

Я хочу просмотреть файл и отправить его на стороне сервера.

Я прошел через множество решений, предоставленных экспертами.Но я не могу найти свою ошибку

Кто-нибудь, пожалуйста, помогите решить ее.

Клиентская сторона

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

}

Серверная сторона

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>

1 Ответ

1 голос
/ 27 февраля 2012

Я не разработчик GWT, поэтому все может быть по-другому, я думаю, что ваш URL-адрес действия сервлета неверен.Вы пытаетесь сервлет с путем /uploadfile/uploadFileServlet, но ваш сервлет фактически отображается на URL /uploadFileServlet.

Еще одна вещь, вам не нужно реализовывать Servlet, если вы расширяете HttpServlet если у вас нет особых причин для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...