今天有个同事做二次开发的时候遇到一些表单数据的小问题,可是这些小问题却也难倒我了。因为之前一直在用struts处理表单数据,好久没直接处理过了。所以完全忘记了,温故知新一下。
获取JSP表单数据,通常的方法是request.getParameter。此方法对于POST提交方式来说,用来获得客户端传送给服务器请求中的消息体信息,对于GET来说是获取URL后面的参数值。无论哪一种方式,参数都是一样的,只是一个显示在消息体中,另外一个在URL上。该参数是由name指定的。
之前一直有个误区,以为request.getParameter只能获取URL上面的参数,正正忽略了还可以拿消息体里面的东西。因为一直以来都用FormBean的关系吧。这些都不大理会了。
如果request.getParameter获取不了值的话,原因会有三个。
1.获取的request.getParameter的参数值不存在于表单中。即没有一个标签里面的name是跟获取的参数所对应的。注意是name而不是id。
2.form表单设置了enctype="multipart/form-data"属性。这个需要上传文件的时候会用到。
3.获取的参数标签里面存在disabled="disabled"
对于第二种情况,想要获取参数值比较麻烦。因为表单数据都封装成meta二进制格式传输了。好像可以通过common-fileupload组件来解决。具体没测试,搜下应该有的。或者有更多其他办法解决。
中文问题:
表单提交的时候,数据流默认为ISO-8859-1。所以获取的值的时候,中文的话可能会出现乱码情况,这时候只用通过转码就可以了。
String str=request.getParameter("userName");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
另外说一下 request.getAttribute
这个方法通常服务器端使用setAttribute,用来封装bean放回给视图层进行进一步的操作。此时视图层就使用getAttribute进行获取数据了。另外setAttribute方式不一定是request,参照scope吧。可选访问更广阔。
关于如何选择GET还是POST
URL的长度
URL是有长度限制的,一般不超过255bytes..实际不同的浏览器会有不同长度准则。
所以表单提交的时候选择method时还必须考虑数据量的问题。大数据和不想数据显示在URL上的话,选择POST比较好。
浏览器缓存机制
GET方法的时候需要注意URL缓存机制,因为浏览器为提供性能,如果通过GET方法投递的两次URL都相同的话,第二次会启动缓存机制。所以常常需要通过传送一个虚拟的值来区分,为了避免第二次获取了一次缓存值。
而对于POST,因为消息体浏览器并不知道它内容,不能判断是否两次投递的信息是否一样。所以不会启动缓存机制。
安全性
对于POST和GET两种请求方式,POST方法也相对的安全那么一点。
总结一点,在普通情况下,能用POST就用POST吧。但是GET方法又可以在很多的情况下给与我们带来很多的便利,也是不可缺少的。
分享到:
相关推荐
本教程将深入探讨如何利用Vue和Element UI快速创建生成表单,执行数据校验,并获取表单数据。 首先,创建一个基于Vue的项目,可以使用官方推荐的Vue CLI工具。通过运行`vue create project-name`命令,你可以快速...
在Web开发中,jQuery作为一个非常流行的JavaScript库,简化了许多复杂的DOM操作,特别是对于表单数据的获取与处理方面提供了极大的便利。本文将详细讲解如何使用jQuery来获取不同类型的表单控件(如文本框、文本域、...
微信小程序提供了内置的表单数据校验功能,可以通过`validateFields`和`getFieldsValue`方法来对表单字段进行校验和获取值。例如: ```javascript Page({ validate() { this.selectComponent('#myForm')....
创建一个`HttpClient`实例,设置好URL,然后使用`PostAsync`方法发送带有表单数据的POST请求。表单数据通常以键值对的形式存在,可以封装到`HttpContent`对象中。 2. **构建表单数据** 表单数据可以使用`...
对于`POST`请求,我们在`servlet`中重写`doPost()`方法来获取表单数据: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletName ...
3. 在HTML中编写获取表单数据的JavaScript函数,并调用Android的JavaScript接口。 4. 在Android端创建一个JavaScriptInterface对象,并添加相应的接收方法。 以上就是如何在Android应用中通过JavaScript相互传递...
在这个名为"Struts2表单数据获取项目"的资源中,我们将深入探讨如何使用Struts2框架来处理表单提交的数据。 首先,我们来看看核心组件`Struts.xml`。这是Struts2应用的主要配置文件,用于定义动作(Actions)、结果...
在Java Web开发中,获取表单数据是常见的任务,它涉及到客户端与服务器之间的交互。本文将详细介绍在Javaweb环境中获取表单数据的多种方式,以帮助开发者更好地理解和处理用户提交的信息。 首先,最常用的方式是...
在这个主题“十分全的servlet获取表单数据”中,我们将深入探讨如何利用Servlet来处理客户端提交的表单信息,这包括各种输入控件如文本框、密码框、选择框、单选框、复选框以及文本域的数据获取。 1. **表单基础** ...
### Vue.js中的表单数据绑定 Vue.js提供了一种简单的方式来实现数据的双向绑定,通过使用`v-model`指令可以轻松地将表单输入和应用状态绑定在一起。在示例中,我们看到了一个使用Element-ui组件库中的`el-input`...
本文将深入探讨如何使用Servlet来获取各种类型的表单数据。 首先,对于普通的输入框、密码框、隐藏字段等,我们可以使用`HttpServletRequest`对象的`getParameter()`方法。例如,如果JSP页面中有如下表单元素: ``...
JavaScript获取网页表单的action属性是一种常用的操作,通常用于获取表单提交时要发送到的URL地址。在Web开发中,表单是用来收集用户输入数据并将其发送到服务器的HTML元素。action属性指定了表单提交后,服务器处理...
通过它们,我们可以模拟浏览器的行为,向网页发送POST或GET请求,从而提交表单数据,或者获取网页的响应内容。 1. **表单数据的提交**: - 使用`HttpWebRequest`创建一个指向网页URL的对象,设置其Method属性为...
JSP获取表单数据的方法:\n\n - 使用request对象:在JSP中,HttpServletRequest对象可以获取客户端发送的所有请求数据,包括表单数据。例如,对于一个名为"user"的文本框,我们可以通过request.getParameter("user...
我上传的是一个留言板的实例,数据库连接为conn.asp;表单处理为submit.asp;外用类upload_asjob.asp处理图片上传; upload_5xsoft.inc 这个类集成了图片上传功能,...最重要的是还可以获取表单控件的内容!供大家学习
### 表单数据传输方式详解 #### 一、概述 在Web开发中,表单数据传输方式是一项基础且重要的技术。通常我们会在网页上使用表单来收集用户输入的信息,并将其发送给服务器进行处理。根据不同的应用场景和技术需求,...
前几天用LayUI表单进行AJAX提交的时候发现,function(data)里的data始终无法获取表单里填的值,当时我认为是出BUG了就用了$(‘#updateform’).serialize()来获取表单数据 //form表单 更新员工信息 form.on('...
在JavaScript Server Faces (JSF)框架中,获取表单数据是常见的操作,这对于处理用户输入、验证和业务逻辑处理至关重要。本文将详细讲解两种方法来获取JSF表单中的数据。 1. EL(Expression Language)表达式 EL是...
在表单数据封装过程中,这些方法会被用来设置和获取属性值。 4. **前端框架集成**: 当前,许多Web应用采用前端框架(如Angular、React或Vue.js)进行视图层的构建。这些框架同样支持数据绑定,可以与后端的...
在本篇文章中,我们将深入探讨如何在ExtJs框架中有效地获取表单元素的值,并结合提供的代码示例进行详细解析。对于前端开发者来说,掌握如何高效地操作表单元素是必不可少的一项技能,尤其是在使用像ExtJs这样的强大...