【问题标题】:How can I get the html data inside a Java servlet?如何在 Java servlet 中获取 html 数据?
【发布时间】:2023-03-20 16:25:01
【问题描述】:

美好的一天!

如何访问 servlet 中的 HTML 文本字段值?我的示例代码如下:

        out.println("<html><head></head>");
        out.println("<body>");
        out.println("Item not found...");
        out.println("<h2>Add Item:</h2>");
        out.println("<form action = \"AddandSearch\">"); 
        out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
        out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
        out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
        out.println("<input type =\"submit\" value =\"Add Item\">");
        out.println("</form>");
        out.println("</body>");
        out.println("</html>");

我需要在用户按下按钮后获取名称、单价和库存的值,以便将其放入数组列表中。是否可以在同一个 servlet 上分配它?我尝试使用此代码:

String id = request.getParameter("name");

但它不起作用,因为必须先按下按钮。我可以使用 getter 和 setter 方法或任何等效方法吗?我需要一个用于数据输入的文本字段,并且必须在 servlet 中完成。结果也必须在同一个 servlet 中生成。 谢谢。

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    我尝试使用此代码:String id = request.getParameter("name"); 但它不起作用,因为必须先按下按钮。

    确实需要使用getParameter(...)。但我怀疑您试图在相同的 doGet(...) 方法中执行此操作,创建表单 HTML ...在您将包含该 HTML 的响应发送给用户之前。

    需要做的是:

    1. 创建 HTML 并发送给作者。
    2. doGet(...)返回。

    3. 等待用户点击提交按钮。

    4. doGet(...) 方法进行新调用。
    5. 找出这是一个AddandSearch 请求...例如通过查看请求 URI
    6. 调用getParameter("name")获取参数。

    鉴于您的 servlet(现在)处理来自不同表单的请求,doGet 方法需要分派到代码的不同部分(例如不同的方法)以处理每种表单类型。


    (我们在这里和其他地方也提到过,像这样在代码中嵌入 HTML 并不是好的工程实践。最好使用 JSP + JSTL 或其他一些模板技术。

    但是,如果这是您的教练告诉您在本练习中执行的操作,请顺其自然。他可能有一个很好的理由……比如没有时间在课程中涵盖 JSP、JSTL 和其他“高级”Java EE 内容。课程拥堵可能是一个严重的问题。)

    【讨论】:

      【解决方案2】:

      它不起作用,因为必须先按下按钮

      我想你刚刚回答了你自己的问题。

      【讨论】:

        【解决方案3】:
        String id = (request.getParameter("name")==null)?"nothing here":request.getParameter("name");
        

        您是否在 AddandSearch 处理 servlet 的 doGet() 方法中处理这个问题?您可能应该使用 method="post"(因为该操作称为“add”,它暗示了持久性)并在 doPost() 方法中处理它。

        【讨论】:

          【解决方案4】:

          在doGet方法中,可以使用这种语法来获取值,

          String title = request.getParameter("title");
          

          【讨论】:

            【解决方案5】:

            您的表单提交按钮应该有一个名称。

            out.println("<html><head></head>");
                out.println("<body>");
                out.println("Item not found...");
                out.println("<h2>Add Item:</h2>");
                out.println("<form action = \"AddandSearch\">"); 
                out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
                out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
                out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
                out.println("<input type =\"submit\" name=\"submit\" value =\"Add Item\">");
                out.println("</form>");
                out.println("</body>");
                out.println("</html>");
            

            当你按下提交按钮时重定向到同一个 servlet 和

            if(request.getParameter("submit")!=null)
            {
            
                  //your code to handle form submission 
            }
            else
            {
            out.println("<html><head></head>");
                out.println("<body>");
                out.println("Item not found...");
                out.println("<h2>Add Item:</h2>");
                out.println("<form action = \"AddandSearch\">"); 
                out.println("Item Name: <input type =\"text\" name =\"name\"> <br>");
                out.println("Unit Price: <input type =\"text\" name =\"unitPrice\"> <br>");
                out.println("On Stock : <input type =\"text\" name =\"stock\"> <br><br>");
                out.println("<input type =\"submit\" name=\"submit\" value =\"Add Item\">");
                out.println("</form>");
                out.println("</body>");
                out.println("</html>");
            }
            

            【讨论】:

              猜你喜欢
              • 2012-08-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-01-05
              • 1970-01-01
              • 1970-01-01
              • 2014-06-06
              • 2012-03-06
              相关资源
              最近更新 更多