【问题标题】:Submit button in servlet is not workingservlet 中的提交按钮不起作用
【发布时间】:2015-08-26 09:11:42
【问题描述】:

我正在尝试制作一个从 html 页面获取数据的 servlet。我是 java servlet 的新手。当我运行 servlet 时,它会显示 html 页面,但提交按钮什么也不做。请帮我弄清楚我错过了什么步骤。

html文件/WebContent/index.html如下

 <!DOCTYPE html>
  <html>
    <head>
        <style>
            #box{
                width: 92%;
                padding: 25px;
                border: 5px solid black;
                margin: 25px;
            }
        </style>
    </head>
    <body>
        <div id = "box">
            <form action ="/src/XXXXXX/servletEX" method="post" id = "summary">
                Purchase Order : <input type="text" name="order"><br>
                Invoice : <input type="text" name="invoice"><br>
                Invoice Date : <input type="date" name="date"><br>
                Supplier Tax ID : <input type="text" name="taxid"><br>
                <p>Remit to : </p>
                <p>Bill to :</p>
            </form>
        </div>
        <div id = "box">
            <form action = "/src/XXXXXX/servletEX" method ="post" id = "tax">
                SHIPPING  <input type="checkbox"  value="head"> Header Level Shipping
                <input type="checkbox"  value="line" checked> Line Level Shipping <br>
                <span>Ship from _____________________</span>
                <span>Ship to  _______________________</span>
            </form>
        </div>
        <div id = "box">
            <h4>Additional Field Only</h4>
            <form action = "/src/XXXXXX/servletEX" method="post" id = "additional">
                <input type="checkbox"  value="head"> information only, No action required from customers </br>
                <span> Supplier Account ID: <input type="text" name="order"> </span> 
                <span> Service Start Date : <input type="date" name="date"></span><br>
                <span> Customer refrence : <input type="text" name="order"> </span> 
                <span> Service End Date : <input type="date" name="date"></span>
                Payment Note : <input type="text" name="order"></br>
                <span>Supplier ____________________</span>
                <span>Customer ____________________</span><br>
                Email : <input type="text" name="order"></br>
                Bill from : <input type="text" name="order"></br>
                <h4> SUPPLIER VAT</h4>
                Supplier VAT/Tax ID : <input type="text" name="order"></br>
            </form>
        </div>
        <div>

            <input type="submit" name="submit" >
            <input type="reset" name="reset" >

         </div>

    </body>
</html>

xml文件/WebContent/WEB-INF/web.xml如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <servlet>
    <servlet-name>servletEX</servlet-name>
    <servlet-class>XXXXXX.servletEX</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>servletEX</servlet-name>
    <url-pattern>/servletEX</url-pattern>
  </servlet-mapping>

</web-app>

..以下是servlet代码/JavaResources/src/(package)/servletEX.java

package XXXXXXX;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.portable.InputStream;




public class servletEX extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public servletEX() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();
        out.println("<html><head>");
        out.println("<title>Servlet Parameter</title>");
        out.println("</head>");
        out.println("<body>");
        Enumeration parameters = request.getParameterNames();
        String param=null;

            System.out.println ("Its here") ;
            while (parameters.hasMoreElements())
            {

                  param=(String)parameters.nextElement();                  
                  System.out.println (param + " " + request.getParameter(param));
                  out.println(param + ":" + request.getParameter(param) + "<br>" );                  
            }
       out.println("</body></html>");

       out.close();
    }



}

【问题讨论】:

  • 将提交按钮放在
    标签内

标签: java html tomcat servlets


【解决方案1】:

提交按钮应该在标签内,

   <form action = "/src/XXXXXX/servletEX" method="post" id = "additional">
            <input type="checkbox"  value="head"> information only, No action required from customers </br>
            <span> Supplier Account ID: <input type="text" name="order"> </span> 
            <span> Service Start Date : <input type="date" name="date"></span><br>
            <span> Customer refrence : <input type="text" name="order"> </span> 
            <span> Service End Date : <input type="date" name="date"></span>
            Payment Note : <input type="text" name="order"></br>
            <span>Supplier ____________________</span>
            <span>Customer ____________________</span><br>
            Email : <input type="text" name="order"></br>
            Bill from : <input type="text" name="order"></br>
            <h4> SUPPLIER VAT</h4>
            Supplier VAT/Tax ID : <input type="text" name="order"></br>


         <input type="submit" name="submit" >
        <input type="reset" name="reset" >

        </form>
    </div>

【讨论】:

    【解决方案2】:

    我注意到提交按钮在表单之外

    <input type="submit" name="submit" >
    <input type="reset" name="reset" >
    

    据我所知,在当前情况下,您无法在不使用 javascript 的情况下提交表单。或将提交按钮放在表单中

    【讨论】:

      【解决方案3】:

      您可以在表单中放置一个提交按钮,或者 - 在 HTML5 中 - 在按钮中设置表单 ID:

      <button type="submit" form="additional">Go</button>
      

      https://developer.mozilla.org/fr/docs/Web/HTML/Element/Button

      【讨论】:

        【解决方案4】:

        将您的提交按钮放在&lt;form&gt;&lt;/form&gt; 标签内。并且还从您的页面中删除多个表单,并将所有字段包含在单个表单标记中,因为您的所有表单都具有相同的操作。

        【讨论】:

          【解决方案5】:

          如果在其中看到提交按钮,表单就会被提交。如果按钮超出&lt;form&gt; &lt;/form&gt;标签的范围,则不会提交。

          您需要将它们放在表单标签内

          <input type="submit" name="submit" >
          <input type="reset" name="reset" >
          

          【讨论】:

            猜你喜欢
            • 2013-04-09
            • 1970-01-01
            • 2017-03-13
            • 2015-03-27
            • 2016-09-11
            • 1970-01-01
            相关资源
            最近更新 更多