2012-02-27 11 views
0

GWTでサーブレットを使用しようとしています。と私は見つけた エラー。GWTでサーブレットが動作しない

No file found for: /uploadfile/uploadFileServlet 

ファイルをブラウズしてサーバー側で送信します。

私は専門家によって提供された多くのソリューションを使いました。しかし私は私の間違いを見つけることができません

それを解決するためにいくつかの1つの助けてください。

クライアント側

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> 
+0

"エラーが見つかりました。"どのようなエラー? –

+0

問題を指定できますか?例外はありますか?何が働き、何がしないのですか? – Timii

+0

@Saifuddin/uploadfile/uploadFileServlet – NewCodeLearner

答えて

1

が、それは異なる可能性があるので、私はあなたのサーブレットのアクションURLがあると思いますGWTの開発者ではないアム違う。あなたはパス/uploadfile/uploadFileServletでサーブレットを試していますが、サーブレットは実際にはURL /uploadFileServletにマップされています。

具体的な理由がある場合を除いて、を拡張する場合は、もう1つ、Servletを実装する必要はありません。

+0

ありがとう、私は私のsetActionメソッドを修正しました。 今私が取得しています別のエラー java.lang.NoClassDefFoundErrorが:ORG/apacheの/コモンズ/ IO /出力/ org.apache.commons.fileupload.disk.DiskFileItemFactory.createItemでDeferredFileOutputStream \t(DiskFileItemFactory.java:199) \t org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361) \t(org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126) – NewCodeLearner

+1

)あなたのapache-commons io jarを追加してくださいあなたのサーバーのクラスパスで。 –

関連する問題