天天看点

《Servlet、JSP和Spring MVC初学指南》——1.10 处理HTML表单

本节书摘来自异步社区《servlet、jsp和spring mvc初学指南》一书中的第1章,第1.10节,作者:【加】budi kurniawan(克尼亚万) , 【美】paul deck著,更多章节内容可以访问云栖社区“异步社区”公众号查看

一个web应用程序中几乎总会包含一个或者多个html表单,供用户输入值。你可以轻松地将一个html表单从一个servlet发送到浏览器。当用户提交表单时,在表单元素中输入的值就会被当作请求参数发送到服务器。

html输入域(文本域、隐藏域或者密码域)或者文本区的值,会被当作字符串发送到服务器。空的输入域或者文本区会发送空的字符串。因此,有输入域名称的,<code>servletrequest.getparameter</code>绝对不会返回null。

html的select元素也向header发送了一个字符串。如果select元素中没有任何选项被选中,那么就会发出所显示的这个选项值。

包含多个值的select元素(允许选择多个选项并且用<code>&lt;select multiple&gt;</code>表示的select元素)发出一个字符串数组,并且必须通过<code>selectrequest.getparametervalues</code>进行处理。

复选框比较奇特。核查过的复选框会发送字符串“on”到服务器。未经核查的复选框则不向服务器发送任何内容,servletrequest.getparameter(fieldname)返回null。

单选框将被选中按钮的值发送到服务器。如果没有选择任何按钮,将没有任何内容被发送到服务器,并且servletrequest.getparameter(fieldname)返回null。

如果一个表单中包含多个输入同名的元素,那么所有值都会被提交,并且必须利用servletrequest.getparametervalues来获取它们。servletrequest.getparameter将只返回最后一个值。

清单1.4中的formservlet类示范了如何处理html表单。它的doget方法将一个order表单发送到浏览器。它的dopost方法获取到所输入的值,并将它们输出。这个servlet就是app01b应用程序的一部分。

清单1.4 formservlet类

利用下面的url,可以调用formservlet:

<code>http://localhost:8080/app01b/form</code>

被调用的doget方法会被这个html表单发送给浏览器:

表单的方法设为post,确保当用户提交表单时,使用http post方法。它的action属性默认,表示该表单会被提交给请求它时用的相同的url。

图1.6展示了一个空的order表单。

《Servlet、JSP和Spring MVC初学指南》——1.10 处理HTML表单

图1.6 一个空的order表单

现在,填写表单,并单击submit按钮。在表单中输入的值,将利用http post方法被发送给服务器,这样就会调用servlet的dopost方法。因此,将会看到图1.7所示的那些值。

《Servlet、JSP和Spring MVC初学指南》——1.10 处理HTML表单

图1.7 在order表单中输入的值