gwt - 在 gwt 中提交表单面板时调用 servlet

标签 gwt servlets

我试图在 GWT 中提交 FormPanel 时调用 servlet。我在 form.setAction("myurl") 上设置 url 并在 web.xml 上完成映射,但是在表单 suvmit 上,servlet 未被调用。这里是代码:

public class MainEntryPoint implements EntryPoint {

  public void onModuleLoad() {
      AbsolutePanel panel=new AbsolutePanel();
      FileUpload upload = new FileUpload();
      upload.setName("file");
      final FormPanel form = new FormPanel();
      form.setWidget(panel);

 form.setMethod(FormPanel.METHOD_POST);
 form.setEncoding(FormPanel.ENCODING_MULTIPART);

 form.setAction("/NewServlet");

RootPanel.get().add(new Label("path="+GWT.getModuleBaseURL()+"/NewServlet"));

 Button sub=new Button("Submit");
   sub.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                RootPanel.get().add(new Label("In click event submiting form"));
                try{
                form.submit();
                }catch(Exception e){RootPanel.get().add(new Label(e+""));}

       }});

       form.addFormHandler(new FormHandler() {
      public void onSubmit(FormSubmitEvent event) {
        // This event is fired just before the form is submitted. We can take
        // this opportunity to perform validation.
                RootPanel.get().add(new Label("On submit"));
      }

      public void onSubmitComplete(FormSubmitCompleteEvent event) {
        // When the form submission is successfully completed, this event is
        // fired. Assuming the service returned a response of type text/html,
        // we can get the result text here (see the FormPanel documentation for
        // further explanation).
                RootPanel.get().add(new Label("On submiting complete"));
      }
    });



 panel.add(upload);
 panel.add(sub);

 RootPanel.get().add(form);

    }

}

这是 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>upload</servlet-name>
        <servlet-class>org.fileup.client.UploadServlet2</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>NewServlet</servlet-name>
        <servlet-class>NewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>upload</servlet-name>
        <url-pattern>/uploadservlet2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>NewServlet</servlet-name>
        <url-pattern>/NewServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>welcomeGWT.html</welcome-file>
    </welcome-file-list>
</web-app>

和 NewServlet.java
public class NewServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           // /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet NewServlet at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");

        } finally { 
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

请告诉我如何在提交 FormPanel 时调用 NewServlet。

最佳答案

您可能想要 form.setAction(GWT.getHostPageBaseURL() + "NewServlet")

关于gwt - 在 gwt 中提交表单面板时调用 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420851/

相关文章:

java - 从 GWT 中的 flexTable 中删除行

java - 零件界面不能与 Tomcat 7 中的 JBoss Weld 一起使用?

GWT:如何从 RootPanel 获取对按钮的引用?

java - GWT 2.6 - Java 6 冲突

java - gwt-dev 包含 httpclient 4.0 我如何在 Maven 环境中解决这个问题?

java - 如何使用 OSGi 声明性服务正确实现 servlet?

java - 在远程服务器中加载 Web 应用程序(Tomcat 上的 servlet)

jsp - 如何安装 JSTL?绝对uri : http://java. sun.com/jSTL/core 无法解析

java - Servlet JDBC 也插入旧值

java - 如何开始研究java项目?