Java servlet在GWT中不工作
我正在尝试在GWT中使用servlet。我发现 错误 我想浏览一个文件并在服务器端发送它 我经历了专家们提供的许多解决方案。但是我找不到我的错误 有人可以帮助解决这个问题 客户端Java servlet在GWT中不工作,java,gwt,servlets,Java,Gwt,Servlets,我正在尝试在GWT中使用servlet。我发现 错误 我想浏览一个文件并在服务器端发送它 我经历了专家们提供的许多解决方案。但是我找不到我的错误 有人可以帮助解决这个问题 客户端 package uploadfile.client; public class Uploadfile implements EntryPoint { @SuppressWarnings("deprecation") public void onModuleLoad() { // TOD
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>
fileUploaderServlet
uploadfile.server.UploadFileServlet
fileUploaderServlet
/上传文件服务
Uploadfile.html
我不是GWT开发人员,所以可能会有所不同,我认为您的servlet操作url是错误的。您正在尝试使用路径为/uploadfile/uploadFileServlet
的servlet,但您的servlet实际上映射到url/uploadFileServlet
还有一件事,如果您正在扩展
HttpServlet
,则无需实现Servlet
,除非您有任何特定的原因要这样做。“我发现了一些错误。”什么错误?您可以指定问题吗?有例外吗?什么有效,什么无效?@saifudin没有找到:/uploadfile的文件/uploadFileServlet@Timii找不到的文件:/uploadfile/uploadFileServlet尝试以下方式调用servlet:uploadForm.setAction(“http://localhost/uploadfile/uploadFileServlet");代码>谢谢,我更正了我的设置方法。现在我在org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)处得到了不同的错误java.lang.NoClassDefFoundError:org/apache/commons/io/output/DeferredFileOutputStream,位于org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)在org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)中,将apache commons io jar添加到服务器类路径中。
<?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>