求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手!

求gxt 文件上传实例(在gxt中如何提交formpanel,服务端怎么设计),求高手!

FormPanel form = new FormPanel();
form .setMethod(Method.POST);
form .setEncoding(Encoding.MULTIPART);

FileUploadField fileUpload = new FileUploadField();
fileUpload.getMessages().setBrowseText(msg.browse());
fileUpload.setFieldLabel(msg.file());
fileUpload.setId("upload");
fileUpload.setName("upload");
form.add(fileUpload);

form.setAction(GWT.getModuleBaseURL()+"uploadImageServlet");
form.addListener(Events.Submit,new Listener() {
@Override
public void handleEvent(FormEvent be) {

hide();
}

});

form.submit();
form.onFrameLoad();

web.xml

uploadImageServlet
xx.UploadImageServlet


uploadImageServlet
/xx/uploadImageServlet

UploadImageServlet.java
这里引用了 commons-fileupload-1.2.1.jar
public class UploadImageServlet extends HttpServlet{
public static final QuetzacoLogger log = QuetzacoWebLogger.getInstance();
@Override
protected void doGet(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
..
}

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

        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setFileCleaningTracker(FileCleanerCleanup.getFileCleaningTracker(getServletContext()));

        ServletFileUpload upload = new ServletFileUpload(factory);

        try {
            List<FileItem> items = upload.parseRequest(request);
            for (final FileItem item : items) {                 
                if (!item.isFormField()) {                      
                    String fileName = item.getName();           
                    item.write(new File(request.getRealPath("/upload"),fileName));
                }
            }
        }catch (Exception e) {
            e.printStackTrace();
        }

}

}