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

标签 jsp servlets forms

我有一个带有 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中获取这些数据并将其添加到数据库中?

最佳答案

创建一个扩展 HttpServlet 的类并输入 @WebServlet 其上的注释包含 servlet 应监听的所需 URL。

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

就让<form action> point到这个网址。我也会recommend对非幂等请求使用 POST 方法。您应该确保已指定 name HTML 表单输入字段的属性( <input><select><textarea><button> )。这表示 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="title" value="Mr" /> Mr
    <input type="radio" name="title" value="Ms" /> Ms
    <input type="radio" name="title" value="Mx" /> Mx</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>

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

创建 doPost() servlet 中的方法,该方法将提交的输入值作为请求参数,由输入字段的 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 title = request.getParameter("title");
    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;
    boolean cancelButtonPressed = request.getParameter("cancel") != null;
    // ...
}

如有必要,做一些validation最后将其保留在数据库中通常的 JDBC/DAO方式。

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

另请参阅:

关于jsp - 提交HTML表单时如何将数据从JSP传输到servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971877/

相关文章:

java - 在java中设置请求头

java - 如何在 Wiremock Servlet 上启用响应模板?

CSS 导航菜单

javascript - 如何从嵌套输入访问 html 表单值

java - 重构 JDBC 函数

java - 我想了解 tomcat 服务器消息

java - 嵌入式 Jetty 是否能够设置过滤器的初始参数?

mysql - 使用 Wildfly 部署错误 servlet

php - 如何在mysql中插入额外的文本?

html - 从 request.getparameter 获取空值 ("name"); com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException