在本 Java Servlet 教程中,我将指导您如何使用Java Servlet从服务器端的 HTML 表单中读取常用输入字段的值。
您知道,处理以 HTML 页面表示的表单数据是 Web 开发中非常常见的任务。一个典型的场景是用户填写表单的字段并提交。服务器将根据提交的数据处理请求,并将响应发送回客户端。下图描述了在服务器端使用 Java servlet 的工作流:

要在 HTML 中创建表单,我们需要使用以下标签:
- <form>:创建一个表单以在其正文中添加字段。
- <input> , <select> , <textarea> ...:创建表单字段,如文本框、下拉列表、文本区域、复选框、单选按钮……和提交按钮。
为了使表单与 Java servlet 一起工作,我们需要为<form>标记指定以下属性:
- method =”post”:将表单数据作为 HTTP POST 请求发送到服务器。一般情况下,表单提交应该在 HTTP POST 方法中完成。
- action =” servlet 的 URL ”:指定负责处理从该表单发布的数据的 servlet 的相对 URL。
例如,以下是登录表单的 HTML 代码:
|
1
2
3
4
5
|
<form name="loginForm" method="post" action="loginServlet">
Username: <input type="text" name="username"/> <br/>
Password: <input type="password" name="password"/> <br/>
<input type="submit" value="Login" />
</form>
|
此表单在浏览器中如下所示:

在服务器端,我们需要创建一个映射到 URL 的 Java servlet:loginServlet,在表单的 action 属性中指定。以下是 servlet 的代码:
|
1
2
3
4
5
6
7
8
9
10
11
|
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// code to process the form...
}
}
|
请注意,servlet 的 URL 由servlet 类之前的@WebServlet注释指定。当用户提交上面的登录表单时,servlet 容器会调用servlet 的doPost()方法。通常,我们将在doPost()方法中执行以下任务:
- 通过请求对象(javax.servlet.http.HttpServletRequest接口的实现)读取从表单发布的字段的值。
- 做一些处理,例如连接到数据库来验证用户名和密码。
- 通过响应对象(javax.servlet.http.HttpServletResponse接口的实现)将响应返回给用户。
为了读取表单字段的值,HttpServletRequest接口提供了以下方法:
- String getParameter(String name):获取由给定名称指定的字段的值,作为字符串。如果不存在具有给定名称的表单字段,则该方法返回 null。
- String[] getParameterValues(String name) : 在 String 对象数组中获取一组具有相同名称的字段的值。如果不存在具有给定名称的字段,则该方法返回 null。
请注意,上述方法还可以处理 URL 查询字符串中的参数,因此名称为 getParameter。
例如,我们可以在doPost()方法中编写以下代码来读取表单字段的值:
|
1
2
|
String username = request.getParameter("username");
String password = request.getParameter("password");
|
要将响应发送回客户端,我们需要通过调用HttpServletResponse接口的getWriter()方法从响应对象中获取写入器:
|
1
|
PrintWriter writer = response.getWriter();
|
然后使用print()或println()方法传递响应(以 HTML 代码的形式)。例如:
|
1
2
3
4
5
|
String htmlRespone = "<html>";
htmlRespone += "<h2>Your username is: " + username + "</h2>";
htmlRespone += "</html>";
writer.println(htmlRespone);
|
这是处理登录表单的 servlet 类的完整代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package net.codejava.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// read form fields
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username: " + username);
System.out.println("password: " + password);
// do some processing here...
// get response writer
PrintWriter writer = response.getWriter();
// build HTML code
String htmlRespone = "<html>";
htmlRespone += "<h2>Your username is: " + username + "<br/>";
htmlRespone += "Your password is: " + password + "</h2>";
htmlRespone += "</html>";
// return response
writer.println(htmlRespone);
}
}
|
这是在浏览器中提交上述登录表单时的示例输出:

到目前为止,您已经了解了使用 Java servlet 处理 HTML 表单数据的来龙去脉。供您参考,我们提供了处理常见 HTML 表单字段的示例列表,如下所示。请注意,我们使用 servlet 中的System.out.println()语句来演示输出。
1.读取文本字段和密码字段的值
- HTML 代码:
12
Username: <inputtype="text"name="username"/>Password: <inputtype="password"name="password"/> - 现场图片:

- servlet 中的 Java 代码:
12345
String username = request.getParameter("username");String password = request.getParameter("password");System.out.println("username is: "+ username);System.out.println("password is: "+ password); - 输出:
|
1
2
|
username is: admin
password is: nimda
|
2.读取复选框字段的值
- HTML 代码:
123
Speaking language:<inputtype="checkbox"name="language"value="english"/>English<inputtype="checkbox"name="language"value="french"/>French - 现场图片:

- servlet 中的 Java 代码:
12345678
String languages[] = request.getParameterValues("language");if(languages !=null) {System.out.println("Languages are: ");for(String lang : languages) {System.out.println("\t"+ lang);}} - 输出:
123
Languages are:englishfrench
3.读取单选按钮字段的值
- HTML 代码:
123
Gender:<inputtype="radio"name="gender"value="male"/>Male<inputtype="radio"name="gender"value="female"/>Female - 现场图片:

- servlet 中的 Java 代码:
12
String gender = request.getParameter("gender");System.out.println("Gender is: "+ gender); - 输出:
|
1
|
Gender is: male
|
4.读取文本区域字段的值
- HTML 代码:
12
Feedback:<br/><textarearows="5"cols="30"name="feedback"></textarea> - 现场图片:

- servlet 中的 Java 代码:
12
String feedback = request.getParameter("feedback");System.out.println("Feed back is: "+ feedback); - 输出:
|
1
|
Feed back is: This tutorial is very helpful. Thanks a lot!
|
5.读取下拉列表(组合框)字段的值
- HTML 代码:
1234567
Job Category:<selectname="jobCat"><optionvalue="tech">Technology</option><optionvalue="admin">Administration</option><optionvalue="biology">Biology</option><optionvalue="science">Science</option></select> - 现场图片:

- servlet 中的 Java 代码:
12
String jobCategory = request.getParameter("jobCat");System.out.println("Job category is: "+ jobCategory); - 输出:
|
1
|
Job category is: science
|
6.读取文件上传字段的数据
要创建一个表单来上传文件,我们需要指定enctype<form>标签的属性如下:
|
1
2
3
4
5
6
|
<form method="post" action="uploadServlet" enctype="multipart/form-data">
Select file to upload: <input type="file" name="uploadFile" />
<input type="submit" value="Upload" />
</form>
|
对于使用 Java servlet 在服务器端处理文件上传,我们推荐这些教程:
本文详细介绍了如何使用JavaServlet从服务器端的HTML表单中读取输入字段的值。通过创建表单,设置method为POST,action指向Servlet,然后在Servlet中使用HttpServletRequest的getParameter方法获取字段值。示例涵盖了文本、密码、复选框、单选按钮、文本区域和下拉列表等字段的处理。此外,还展示了如何构建响应并将其发送回客户端。

1313

被折叠的 条评论
为什么被折叠?



