servlet在GWT中如何工作? [英] How exactly servlet Work in GWT?

查看:153
本文介绍了servlet在GWT中如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出servlet如何工作。
我使用此代码设计我的servlet



客户端



formPanel.setAction(GWT.getModuleBaseURL()+fileupload);



/ p>

formPanel.Sumit();




$



b $ b

当我点击o提交按钮,我可以你选择test.doc在开发模式。



请有人帮助。



源代码。
客户。

  final FormPanel formPanel = new FormPanel 
formPanel.addFormHandler(new FormHandler(){

public void onSubmitComplete(final FormSubmitCompleteEvent event){
// TODO自动生成方法存根
Window.alert event.getResults());
}

public void onSubmit(final FormSubmitEvent event){
// TODO自动生成方法存根
event.setCancelled );
}
});
final FileUpload upload = new FileUpload();
formPanel.setMethod(FormPanel.METHOD_POST);
formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
formPanel.setAction(GWT.getModuleBaseURL()+fileupload);
formPanel.setWidget(upload);

Button btnAdd = new Button(Add);

btnAdd.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event){
GWT.log(you selected+ upload.getFilename(),null) ;
formPanel.submit();
}
});

服务器

  public class FileUpload extends HttpServlet {

public void dopost(HttpServletRequest request,HttpServletResponse response){
ServletFileUpload upload = new ServletFileUpload();
System.out.println(pratyush文件上传);
try {
FileItemIterator iterator = upload.getItemIterator(request);

while(iterator.hasNext()){
FileItemStream itemStream = iterator.next();

String name = itemStream.getFieldName();
InputStream stream = itemStream.openStream();

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int len;
byte [] buffer = new byte [8192];
while((len = stream.read(buffer,0,buffer.length))!= -1){
outputStream.write(buffer,0,len);

}

int maxFileSize = 2 *(1024 * 1024);
if(outputStream.size()> maxFileSize){
throw new RuntimeException(File is> than+ maxFileSize);
}

}
} catch(FileUploadException e){
// TODO自动生成的catch块
e.printStackTrace
} catch(IOException e){
// TODO自动生成的catch块
e.printStackTrace();
} catch(Exception e){
throw new RuntimeException();
}
}
}


解决方案>

  form.setMethod(FormPanel.METHOD_POST); //将生成< form method =post>< / form> 
form.setAction(GWT.getModuleBaseURL()+fileupload);
//现在< form method =postaction =domain / testapp / fileupload>< / form>

因此,当您单击提交时,其路径将匹配 fileUploaderServler url pattern,因此 com.testapp.server.FileUpload.doPost(HttpServletRequest请求,HttpServletResponse响应);将执行


I am try to find out How servlet work. I used this code to design my servlet

client!

formPanel.setAction(GWT.getModuleBaseURL()+"fileupload");

and on click

formPanel.Sumit();

server!

in Server, i didnt Understand how this doPost method will be called by the client.

When i click o submit button , i can "you selected test.doc" in development mode.

Please someone help.

Source Code. Client.

   final FormPanel formPanel = new FormPanel();
    formPanel.addFormHandler(new FormHandler() {

        public void onSubmitComplete(final FormSubmitCompleteEvent event) {
            // TODO Auto-generated method stub
            Window.alert(event.getResults());
        }

        public void onSubmit(final FormSubmitEvent event) {
            // TODO Auto-generated method stub
            event.setCancelled(true);
        }
    });
 final FileUpload upload = new FileUpload();
 formPanel.setMethod(FormPanel.METHOD_POST);
    formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
    formPanel.setAction(GWT.getModuleBaseURL()+"fileupload");
             formPanel.setWidget(upload);

      Button btnAdd = new Button("Add");

        btnAdd.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            GWT.log("you selected " + upload.getFilename(), null);
            formPanel.submit();
        }
    });

Server

    public class FileUpload extends HttpServlet {

public void dopost(HttpServletRequest request,HttpServletResponse response){
    ServletFileUpload upload = new ServletFileUpload();
    System.out.println("pratyush file upload");
    try {
        FileItemIterator iterator = upload.getItemIterator(request);

        while (iterator.hasNext()){
            FileItemStream itemStream = iterator.next();

            String name = itemStream.getFieldName();
            InputStream stream = itemStream.openStream();

            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            int len;
            byte[] buffer = new byte[8192];
            while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
                outputStream.write(buffer, 0, len);

            }

            int maxFileSize = 2*(1024*1024); 
               if (outputStream.size() > maxFileSize) { 
                   throw new RuntimeException("File is > than " + maxFileSize);
               }

        }
    } catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }catch(Exception e){
        throw new RuntimeException();
    }
}
 }

解决方案

form.setMethod(FormPanel.METHOD_POST);  //will generate <form method="post"></form>
form.setAction(GWT.getModuleBaseURL()+"fileupload"); 
// and now <form method="post" action="domain/testapp/fileupload"></form>

So when you click submit its path will match the fileUploaderServler url pattern, consequently com.testapp.server.FileUpload.doPost(HttpServletRequest request, HttpServletResponse response); will be executed.

这篇关于servlet在GWT中如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆