📜  Servlet – 表单(1)

📅  最后修改于: 2023-12-03 14:47:24.967000             🧑  作者: Mango

Servlet - 表单

Servlet 是 Java Web 开发中的一种技术,它允许开发人员使用 Java 编写 Web 应用程序。其中一个关键功能是通过 Servlet 处理来自 Web 页的表单数据。

表单的基础

表单是 Web 开发中的一个基本部分,它允许用户与 Web 应用程序交互并提交数据。表单通常包含各种输入元素,如文本框、多选框、单选按钮、下拉列表等等。

HTML 表单通常使用 <form> 元素来定义,其中包含要提交的表单数据以及要提交数据到的 URL:

<form method="post" action="/submit-form">
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Submit">
</form>

在该示例中,method 属性指定了表单数据提交方式(此处为 POST 方法),action 属性指定了表单数据提交的目标 URL。

数据输入元素由 <input> 元素定义,name 属性指定了该输入元素的名称,type 属性指定了输入元素的类型,例如文本框或密码框。

表单提交按钮由 <input> 元素的 type 属性值为 "submit" 的元素定义,它会将表单数据提交到指定的 URL。

Servlet 接收表单数据

当用户提交表单时,Servlet 可以通过 HttpServletRequest 对象访问表单数据。HttpServletRequest 对象已经在 Servlet 容器中创建,可以通过 doGet()doPost() 方法的参数进行访问。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  
  // 处理表单数据...
}

在示例中,request.getParameter() 方法被用于获取表单数据。该方法以字符串格式返回表单数据,取决于表单输入元素的类型和 name 属性。

在完成表单数据处理后,Servlet 可以向用户显示结果,例如使用 ServletResponse 对象将 HTML 输出到页面。

组合表单数据和页面呈现

Servlet 还可以将表单处理和 HTML 页面呈现组合在一起。通过 Servlet 自动生成表单中的某些值,例如下拉列表。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String[] items = {"item1", "item2", "item3", "item4"};
  
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  
  out.println("<html>");
  out.println("<head><title>My Form</title></head>");
  out.println("<body>");
  
  out.println("<form method='post' action='/submit-form'>");
  out.println("<select name='item'>");
  for (String item : items) {
    out.println("<option value='" + item + "'>" + item + "</option>");
  }
  out.println("</select>");
  out.println("<input type='submit' value='Submit'>");
  out.println("</form>");
  
  out.println("</body></html>");
}

在该示例中,Servlet 生成下拉列表的 HTML。在表单提交后,Servlet 可以使用相同的技术处理表单数据和呈现响应。