簡體   English   中英

將數據從jsp傳輸到servlet

[英]Transfer data from jsp to servlet

我試圖將數據從jsp表單發送到servlet,但是無法讀取通過servlet中的POST方法發送的數據。 這是servlet代碼

public class TUhServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {



        String s= req.getParameter("post_text");
        System.out.println(s);
        resp.sendRedirect("/tuh.jsp");
    }
}

這是tuh.jsp中的形式

<form class="post_form" action="./" 
              method="post" enctype="multipart/form-data">
            0"/><br/>
            Message : <input name="post_text" type="text" size="30" maxlength="30"/>
            <p><input type="submit" value="Post!"/></p>
            <input type="hidden" name="type" value="post"/>
        </form>

web.xml

<servlet>
        <servlet-name>TUh</servlet-name>
        <servlet-class>tuh.TUhServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TUh</servlet-name>
        <url-pattern>/tuh</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>tuh.jsp</welcome-file>
    </welcome-file-list>
</web-app>

對於<input type="text">您必須設置組件的名稱,如StackOverflow Servlets Wiki示例所示

<input id="post_text" name="post_text" type="text" size="30" maxlength="30"/>

對所有組件以及hidden字段執行相同的操作。

您在代碼中發布的表單還有其他問題:

  • 用簡單的形式,至少不要在處理文件上載時使用enctype="multipart/form-data" (示例中未顯示)。 如果該代碼僅用於將文本數據從客戶端發送到服務器,則將其刪除。
  • <form>中的action屬性不會將信息發送到servlet的正確URL映射。 您應該將其更改為/thu

最后,您的<form>應該看起來像

<form class="post_form" action="thu" method="post">
    <!-- contents... -->
</form>

如果您正在處理文件上載但沒有在此處發布所有JSP代碼的情況,那么您應該尋找另一種方法來提取請求中發送的數據,該方法在此處說明: 如何使用JSP / Servlet將文件上載到服務器?

我認為您需要為要在servlet上訪問的所有輸入元素設置name屬性:

<input name="post_text" type="text" size="30" maxlength="30"/>

現在就像@Luiggi提到的那樣,但我認為ID屬性不是必需的, name屬性是必需的。

我認為您不需要enctype="multipart/form-data"並檢查web.xml文件中的映射。 它應該需要更改@Luiggi Mendoza提到的URL。 我們無法使用enctype="multipart/form-data"發送vlaues。 在我的項目中,我曾嘗試過。但是在您的問題中,可以通過更改代碼來解決.....

暫無
暫無

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

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