Servlet – 表单数据
Servlet 是在支持Java的 Web 服务器或应用程序服务器上运行的 Java 程序。它们用于处理从网络服务器获得的请求,处理请求,产生响应,然后将响应发送回网络服务器。 Servlet 的属性如下:
- Servlet 在服务器端工作。
- Servlet 能够处理从网络服务器获得的复杂请求。
那么,“处理客户数据”是什么意思?
我们一定遇到过许多需要用数据填写表格才能访问某些应用程序的情况。在这种情况下,作为开发人员,您需要处理从浏览器传递到 Web/应用程序服务器并最终传递到后端程序以处理该请求的数据或信息。在本章中,我们将学习如何使用 Servlet 处理这种形式的数据。
HttpServlet 类
Java提供了 HttpServlet 类,它扩展了 GenericServlet 类来处理网站的特定于 HTTP 的请求/响应。它提供了 HTTP 特定的方法,例如 doGet()、doPost()、doPut()、doDelete() 等。如果我们在类中扩展 HttpServlet,我们必须至少覆盖这些方法中的一个来处理请求并发送回复。我们需要使用 servlet 类中的 doGet() 或 doPost() 方法,根据表单中指定的方法从浏览器获取信息。
GET方法类型和doGet()方法
servlet 中的 doGet() 方法用于处理 HTTP GET 请求。因此,基本上,应该使用 HTTP GET 方法将数据从服务器获取到浏览器。尽管在某些请求中,GET 方法也用于将数据从浏览器发送到服务器。在这种情况下,您需要了解以下有关 GET 方法如何工作的要点。
- 正在提交给服务器的数据将在 URL 中使用查询参数可见,例如“ http://localhost:8080/HelloServlet/hello?myParam=myValue ”。
- 因此,如果您要发送任何敏感信息(如密码),则不应使用 GET 方法,因为输入的数据可以在浏览器 URL 中清晰可见。
POST 方法类型和 doPost() 方法
servlet 中的 doPost() 方法用于处理 HTTP POST 请求。它用于将数据从浏览器提交到服务器进行处理。使用 POST 方法类型提交的数据是在消息体中发送的,因此它是安全的,在 URL 中是看不到的。并且可以通过 POST 方法发送的数据没有限制。理想情况下,我们需要使用 POST 方法,将表单数据发送到网络服务器。因此,我们将在此示例中使用 doPost() 方法。并且我们将学习如何处理servlet中的一些常见的HTML字段数据,例如Text field、Checkbox、Radio button、Dropdown等,值。
为此, Java提供了ServletRequest接口。
HttpServlet请求(一):
- HttpServletRequest 接口扩展了 ServletRequest 接口,为 Servlet 提供特定于 Http 的请求信息。
- servlet 容器创建一个 HttpServletRequest 对象并将其作为参数传递给 servlet 的服务方法——doPost()、doGet() 等,
- 该对象提供参数名称和值、属性和输入流等数据。它有多种方法来处理客户端数据。
- 在本例中,我们将使用getParameter () 和getParameterValues () 来读取表单字段的值。
getParameter() 方法:
- 该方法从给定名称指定的请求中返回字段/参数的值,作为字符串。如果指定的参数名称不存在,则返回 null。
- 此方法应该用于只有一个值的参数。如果有多个值,那么它只返回第一个值。
句法:
Java
// String type specifying the parameter
// name of which the value to be returned as String
java.lang.String getParameter(java.lang.String name)
Java
// String type specifying the parameter name
// of which the values to be returned in array
java.lang.String[] getParameterValues(java.lang.String name)
HTML
User Details
Fill in the Form
Java
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;
// Servlet implementation class FormDataHandle
// Annotation to map the Servlet URL
@WebServlet("/FormData")
public class FormDataHandle extends HttpServlet {
private static final long serialVersionUID = 1L;
// Auto-generated constructor stub
public FormDataHandle() {
super();
}
// HttpServlet doPost(HttpServletRequest request, HttpServletResponse response) method
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Get the values from the request using 'getParameter'
String name = request.getParameter("name");
String phNum = request.getParameter("phone");
String gender = request.getParameter("gender");
// To get all the values selected for
// programming language, use 'getParameterValues'
String progLang[] = request.getParameterValues("language");
// Iterate through the String array to
// store the selected values in form of String
String langSelect = "";
if(progLang!=null){
for(int i=0;i");
out.print("Details Entered
");
out.print("Full Name: "+ name + "
");
out.print("Phone Number: "+ phNum +"
");
out.print("Gender: "+ gender +"
");
out.print("Programming languages selected: "+ langSelect +"
");
out.print("Duration of course: "+ courseDur+"
");
out.print("Comments: "+ comment);
out.print("