提交 HTML 表单时如何将数据从 JSP 传输到 servlet

Posted

技术标签:

【中文标题】提交 HTML 表单时如何将数据从 JSP 传输到 servlet【英文标题】:How to transfer data from JSP to servlet when submitting HTML form 【发布时间】:2020-11-24 15:18:30 【问题描述】:

我有一个带有 html 表单的 JSP 页面:

<form action="SERVLET">
    <input type="text" name="name"/><br>        
    <input type="text" name="group"/>
    <input type="text" name="pass"/>
    <input type="submit" value="submit">            
</form>

如何在 servlet 中获取这些数据并将它们添加到数据库中?

【问题讨论】:

【参考方案1】:

创建一个扩展 HttpServlet 的类,并在其上添加 @WebServlet 注释,其中包含 servlet 应侦听的所需 URL。

@WebServlet("/yourServletURL")
public class YourServlet extends HttpServlet 

然后让&lt;form action&gt; point 访问此 URL。我也会recommend 对非幂等请求使用 POST 方法。您应该确保已指定 HTML 表单输入字段的 name 属性(&lt;input&gt;&lt;select&gt;&lt;textarea&gt;&lt;button&gt;)。这表示 HTTP 请求参数名称。最后,您还需要确保感兴趣的输入字段包含在所需的表单内,而不是在外面。

以下是各种HTML form input fields的一些示例:

<form action="$pageContext.request.contextPath/yourServletURL" method="post">
    <p>Normal text field.        
    <input type="text" name="name" /></p>

    <p>Secret text field.        
    <input type="password" name="pass" /></p>

    <p>Single-selection radiobuttons.        
    <input type="radio" name="gender" value="M" /> Male
    <input type="radio" name="gender" value="F" /> Female</p>

    <p>Single-selection checkbox.
    <input type="checkbox" name="agree" /> Agree?</p>

    <p>Multi-selection checkboxes.
    <input type="checkbox" name="role" value="USER" /> User
    <input type="checkbox" name="role" value="ADMIN" /> Admin</p>

    <p>Single-selection dropdown.
    <select name="countryCode">
        <option value="NL">Netherlands</option>
        <option value="US">United States</option>
    </select></p>

    <p>Multi-selection listbox.
    <select name="animalId" multiple="true" size="2">
        <option value="1">Cat</option>
        <option value="2">Dog</option>
    </select></p>

    <p>Text area.
    <textarea name="message"></textarea></p>

    <p>Submit button.
    <input type="submit" name="submit" value="submit" /></p>
</form>

在您的 servlet 中创建一个 doPost() 方法,该方法将提交的输入值作为由输入字段的 name不是 id!)键入的请求参数。您可以使用request.getParameter()从单值字段获取提交的值,使用request.getParameterValues()从多值字段获取提交的值。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    String name = request.getParameter("name");
    String pass = request.getParameter("pass");
    String gender = request.getParameter("gender");
    boolean agree = request.getParameter("agree") != null;
    String[] roles = request.getParameterValues("role");
    String countryCode = request.getParameter("countryCode");
    String[] animalIds = request.getParameterValues("animalId");
    String message = request.getParameter("message");
    boolean submitButtonPressed = request.getParameter("submit") != null;
    // ...

如有必要,请执行一些 validation 并最终以通常的 JDBC/DAO 方式将其保存在数据库中。

User user = new User(name, pass, roles);
userDAO.save(user);

另见:

HTML beginner tutorial Our Servlets wiki page doGet and doPost in Servlets How do I call a specific Java method on click/submit event of specific button in JSP? How perform validation and display error message in same form in JSP? How can I retain HTML form field values in JSP after submitting form to Servlet? How to upload files to server using JSP/Servlet? Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern Servlet returns "HTTP Status 404 The requested resource (/servlet) is not available"

【讨论】:

这是我正在寻找的代码:$pageContext.request.contextPath 在表单操作中 如何使用javac编译上面的java代码?【参考方案2】:

嗯,网上有很多关于 java 的数据库教程(你要找的是 JDBC)。但是,如果您使用的是普通 servlet,您将有一个扩展 HttpServlet 的类,并且在其中您将有两个看起来像的方法

public void doPost(HttpServletRequest req, HttpServletResponse resp)


public void doGet(HttpServletRequest req, HttpServletResponse resp)


其中一个用于处理GET 操作,另一个用于处理POST 操作。然后,您将使用 HttpServletRequest 对象来获取作为表单的一部分传递的参数,如下所示:

String name = req.getParameter("name");

然后,一旦您获得了表单中的数据,就可以使用网络上广泛提供的 JDBC 教程将其添加到数据库中相对容易。我还建议搜索一个基本的 Java servlet 教程来帮助您入门。这很容易,尽管需要正确配置许多步骤。

【讨论】:

【参考方案3】:

http://oreilly.com/catalog/javacook/chapter/ch18.html

搜索:

“问题

您想在 servlet 中处理来自 HTML 表单的数据。 "

【讨论】:

【参考方案4】:

首先创建您的 jsp 文件: 并写下你想要的文本字段 例如:

然后创建你的 servlet 类:

public class test

protected void doGet(paramter , paramter)

String name  = request.getparameter("name");
 


【讨论】:

这对已经给出的答案有何贡献?换句话说,你究竟为什么要重复一个已经给出的答案? Stack Overflow 是一个问答网站,每个人都可以发布答案并在同意后互相投票。 Stack Overflow 不是一个老式的讨论论坛,每个人都在达成一致后互相重复,变成难以消化的混乱。 Stack Overflow 通过这种方式可以更轻松地找到好的答案。 我们在之前接受的答案中有此信息。

以上是关于提交 HTML 表单时如何将数据从 JSP 传输到 servlet的主要内容,如果未能解决你的问题,请参考以下文章

JSP将表单中的数据提交到本页面

一个从html向servlet中提交数据的问题

jsp表单提交中文插入数据库,数据库出现问号?

jsp 如何实现提交表单 但不跳转到提交页面

如何在 page.redirect 从 servlet 到 jsp 上显示成功消息

HTML表单提交到.HTML实例