簡體   English   中英

如何在Java Servlet中獲取html數據?

[英]How can I get the html data inside a Java servlet?

美好的一天!

如何訪問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>");

用戶按下按鈕后,我需要獲取名稱,單價和股票的值,這樣我才能將其放入arraylist中。 是否可以在同一servlet上分配它? 我嘗試使用此代碼:

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

但是它不起作用,因為必須首先按下該按鈕。 我可以使用getter和setter方法或任何等效方法嗎? 我需要一個用於輸入數據的文本字段,並且它必須在servlet內部完成。 結果還必須在相同的servlet內生成。 謝謝。

我嘗試使用此代碼: String id = request.getParameter("name"); 但是它不起作用,因為必須首先按下該按鈕。

確實需要使用getParameter(...) 但是我懷疑您嘗試使用創建表單HTML ...的相同doGet(...)方法執行此操作,然后再將包含該HTML的響應發送給用戶。

需要發生的是:

  1. 創建HTML並發送給作者。
  2. doGet(...)返回。

  3. 等待用戶單擊提交按鈕。

  4. doGet(...)方法上獲得新的調用。
  5. 找出這是一個AddandSearch請求...例如通過查看請求URI
  6. 調用getParameter("name")以獲取參數。

假設您的Servlet現在正在處理來自不同形式的請求,則doGet方法需要分派到代碼的不同部分(例如,不同的方法)以處理每種形式的類型。


(我們在這里和其他地方也提到過,將HTML嵌入代碼中並不是一種好的工程實踐。最好使用JSP + JSTL或其他模板技術。

但是,如果這是您的講師告訴您進行此練習的步驟,請順其自然。 他可能有一個很好的理由……就像沒有時間學習課程中的JSP,JSTL和其他“高級” Java EE一樣。 課程擁擠可能是一個嚴重的問題。)

String id = (request.getParameter("name")==null)?"nothing here":request.getParameter("name");

您是否在AddandSearch處理servlet的doGet()方法中進行處理? 您可能應該使用method =“ post”(因為該操作稱為“ add”,從而提供了持久性的提示),並在doPost()方法中對其進行了處理。

它不起作用,因為必須先按下按鈕

我想您只是在這里回答了自己的問題。

在doGet方法中,您可以使用此語法獲取值,

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

您的表單提交按鈕應有一個名稱。

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>");

當您按下Submit按鈕時,將重定向到相同的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>");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM