📜  JSP-表单处理

📅  最后修改于: 2020-11-13 05:21:17             🧑  作者: Mango


在本章中,我们将讨论JSP中的表单处理。当您需要将一些信息从浏览器传递到Web服务器以及最终传递到后端程序时,您肯定遇到过许多情况。浏览器使用两种方法将此信息传递到Web服务器。这些方法是GET方法和POST方法。

表格处理方法

现在让我们讨论“表单处理”中的方法。

GET方法

GET方法发送附加到页面请求的已编码用户信息。页面和编码信息由?分隔。字符如下-

http://www.test.com/hello?key1=value1&key2=value2

GET方法是将信息从浏览器传递到Web服务器的默认方法,它会生成一个长字符串,该字符串出现在浏览器的Location:box中。建议最好不要使用GET方法。如果您有密码或其他敏感信息要传递给服务器。

GET方法具有大小限制:请求字符串只能有1024个字符

此信息使用QUERY_STRING标头传递,并且可以通过QUERY_STRING环境变量进行访问,该环境变量可以使用请求对象的getQueryString()getParameter()方法进行处理。

POST方法

将信息传递到后端程序的通常更可靠的方法是POST方法。

此方法打包信息的方式与GET方法完全相同,但不是在?之后将其作为文本字符串发送。在网址中将其作为单独的消息发送。此消息以标准输入的形式到达后端程序,您可以解析该标准输入并将其用于处理。

JSP使用getParameter()方法读取简单参数,并使用getInputStream()方法读取来自客户端的二进制数据流来处理这种类型的请求。

使用JSP读取表单数据

JSP根据情况使用以下方法自动处理表单数据解析-

  • getParameter() -您调用request.getParameter()方法以获取表单参数的值。

  • getParameterValues() -如果参数出现多次并返回多个值,例如复选框,则调用此方法。

  • getParameterNames() -如果要获取当前请求中所有参数的完整列表,请调用此方法。

  • getInputStream() -调用此方法以读取来自客户端的二进制数据流。

使用URL的GET方法示例

以下URL将使用GET方法将两个值传递给HelloForm程序。

http:// localhost:8080 / main.jsp?first_name = ZARA&last_name = ALI

下面是main.jsp JSP程序,用于处理Web浏览器给出的输入。我们将使用getParameter()方法,这使得访问传递的信息非常容易-

Using GET Method to Read Form Data
   
   
   
      

Using GET Method to Read Form Data

  • First Name:

  • Last Name:

现在,在浏览器的Location:box中输入http:// localhost:8080 / main.jsp?first_name = ZARA&last_name = ALI 。这将产生以下结果-

  • First Name: ZARA

  • Last Name: ALI

使用表单的GET方法示例

以下是使用HTML FORM和Submit按钮传递两个值的示例。我们将使用相同的JSP main.jsp来处理此输入。

First Name:
Last Name:

将此HTML保留在Hello.htm文件中,并将其放在 / webapps / ROOT目录中。当您访问http:// localhost:8080 / Hello.htm时,您将收到以下输出。

名字:
姓:

尝试输入名字和姓氏,然后单击提交按钮以在运行tomcat的本地计算机上查看结果。基于提供的输入,它将生成与以上示例中提到的结果类似的结果。

使用表单的POST方法示例

让我们在上面的JSP中做一些修改,以同时处理GET和POST方法。下面是main.jsp JSP程序,用于处理Web浏览器使用GET或POST方法给出的输入。

实际上,由于更改了传递参数的唯一方法并且没有二进制数据传递给JSP程序,因此上述JSP并没有发生变化。与文件处理相关的概念将在单独的章节中解释,我们需要在其中读取二进制数据流。

Using GET and POST Method to Read Form Data
   
   
   
      

Using POST Method to Read Form Data

  • First Name:

  • Last Name:

以下是Hello.htm文件的内容-

First Name:
Last Name:

现在让我们将main.jsp和hello.htm保留在 / webapps / ROOT目录中。当您访问http:// localhost:8080 / Hello.htm时,您将收到以下输出。

名字:
姓:

尝试输入名字和姓氏,然后单击提交按钮以在运行tomcat的本地计算机上查看结果。

根据提供的输入,您将收到与以上示例类似的结果。

将复选框数据传递到JSP程序

当需要选择多个选项时,将使用复选框。

以下是带有两个复选框的表单的示例HTML代码CheckBox.htm

Maths Physics Chemistry

上面的代码将产生以下结果-

数学物理化学

以下是main.jsp JSP程序,用于处理Web浏览器为复选框按钮提供的输入。

Reading Checkbox Data
   
   
   
      

Reading Checkbox Data

  • Maths Flag:

  • Physics Flag:

  • Chemistry Flag:

上面的程序将产生以下结果-

Reading Checkbox Data
  • 数学标志::开

  • 物理标志:: null

  • 化学标志::开

读取所有表格参数

以下是一个通用示例,该示例使用HttpServletRequest的getParameterNames()方法读取所有可用的表单参数。此方法返回一个Enumeration,其中包含未指定顺序的参数名称。

有了枚举后,我们可以使用hasMoreElements()方法确定何时停止并使用nextElement()方法获取每个参数名称,从而以标准方式循环枚举。

HTTP Header Request Example
   

   
      

HTTP Header Request Example

Param Name Param Value(s)
maths on
chemistry on

以下是Hello.htm的内容-

Maths Physics Chem

现在尝试使用上面的Hello.htm调用JSP;这将基于提供的输入生成如下所示的结果-

读取所有表格参数

参数名称 参数值
数学
化学

您可以尝试使用上述JSP来读取具有其他对象(例如文本框,单选按钮或下拉列表等)的任何其他表单的数据。