`
Kenny.Lee
  • 浏览: 515672 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于获取表单数据

    博客分类:
  • J2EE
阅读更多
    今天有个同事做二次开发的时候遇到一些表单数据的小问题,可是这些小问题却也难倒我了。因为之前一直在用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方法又可以在很多的情况下给与我们带来很多的便利,也是不可缺少的。
2
0
分享到:
评论
2 楼 Kenny.Lee 2009-03-30  
metadmin 写道

中文还可以使用tomcat分发包例子带的 filter.SetCharacterEncodingFilter类来控制。这样代码里面就不要重新构造String了。有个问题交流一下:select元素,如何把选择值传到服务器呢?我总是传不过去,至少在submitForm时候,用js来处理成一个隐藏域。------------------权限管理圈子欢迎您:http://accessmanager.group.iteye.com/


同样使用request.getParameter 方法就好了。类似的,当然getParameterValues也同样可以。

form提交的时候自动把option selected属性为true选项加到请求体
1 楼 metadmin 2009-03-30  
中文还可以使用tomcat分发包例子带的 filter.SetCharacterEncodingFilter类来控制。这样代码里面就不要重新构造String了。

有个问题交流一下:
select元素,如何把选择值传到服务器呢?我总是传不过去,至少在submitForm时候,用js来处理成一个隐藏域。


------------------
权限管理圈子欢迎您:
http://accessmanager.group.iteye.com/

相关推荐

    基于VueElementUI快速创建生成表单进行数据校验获取表单数据

    本教程将深入探讨如何利用Vue和Element UI快速创建生成表单,执行数据校验,并获取表单数据。 首先,创建一个基于Vue的项目,可以使用官方推荐的Vue CLI工具。通过运行`vue create project-name`命令,你可以快速...

    jquery获取表单值

    在Web开发中,jQuery作为一个非常流行的JavaScript库,简化了许多复杂的DOM操作,特别是对于表单数据的获取与处理方面提供了极大的便利。本文将详细讲解如何使用jQuery来获取不同类型的表单控件(如文本框、文本域、...

    微信小程序例子——使用form表单获取输入框数据

    微信小程序提供了内置的表单数据校验功能,可以通过`validateFields`和`getFieldsValue`方法来对表单字段进行校验和获取值。例如: ```javascript Page({ validate() { this.selectComponent('#myForm')....

    C# WinForm提交表单到网页,并且获取反馈数据

    创建一个`HttpClient`实例,设置好URL,然后使用`PostAsync`方法发送带有表单数据的POST请求。表单数据通常以键值对的形式存在,可以封装到`HttpContent`对象中。 2. **构建表单数据** 表单数据可以使用`...

    获取网页表单数据并显示

    对于`POST`请求,我们在`servlet`中重写`doPost()`方法来获取表单数据: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletName ...

    android获取html表单数据

    3. 在HTML中编写获取表单数据的JavaScript函数,并调用Android的JavaScript接口。 4. 在Android端创建一个JavaScriptInterface对象,并添加相应的接收方法。 以上就是如何在Android应用中通过JavaScript相互传递...

    Struts2表单数据获取项目

    在这个名为"Struts2表单数据获取项目"的资源中,我们将深入探讨如何使用Struts2框架来处理表单提交的数据。 首先,我们来看看核心组件`Struts.xml`。这是Struts2应用的主要配置文件,用于定义动作(Actions)、结果...

    十分全的servlet获取表单数据

    在这个主题“十分全的servlet获取表单数据”中,我们将深入探讨如何利用Servlet来处理客户端提交的表单信息,这包括各种输入控件如文本框、密码框、选择框、单选框、复选框以及文本域的数据获取。 1. **表单基础** ...

    vue获取form表单的值示例

    ### Vue.js中的表单数据绑定 Vue.js提供了一种简单的方式来实现数据的双向绑定,通过使用`v-model`指令可以轻松地将表单输入和应用状态绑定在一起。在示例中,我们看到了一个使用Element-ui组件库中的`el-input`...

    Javaweb获取表单数据的多种方式

    在Java Web开发中,获取表单数据是常见的任务,它涉及到客户端与服务器之间的交互。本文将详细介绍在Javaweb环境中获取表单数据的多种方式,以帮助开发者更好地理解和处理用户提交的信息。 首先,最常用的方式是...

    servlet获取表单数据详解(十分全)

    本文将深入探讨如何使用Servlet来获取各种类型的表单数据。 首先,对于普通的输入框、密码框、隐藏字段等,我们可以使用`HttpServletRequest`对象的`getParameter()`方法。例如,如果JSP页面中有如下表单元素: ``...

    JavaScript获取网页表单action属性的方法

    JavaScript获取网页表单的action属性是一种常用的操作,通常用于获取表单提交时要发送到的URL地址。在Web开发中,表单是用来收集用户输入数据并将其发送到服务器的HTML元素。action属性指定了表单提交后,服务器处理...

    C# Winform和网页表单交互(提交和获取)

    通过它们,我们可以模拟浏览器的行为,向网页发送POST或GET请求,从而提交表单数据,或者获取网页的响应内容。 1. **表单数据的提交**: - 使用`HttpWebRequest`创建一个指向网页URL的对象,设置其Method属性为...

    jsp 应用获取表单元素

    JSP获取表单数据的方法:\n\n - 使用request对象:在JSP中,HttpServletRequest对象可以获取客户端发送的所有请求数据,包括表单数据。例如,对于一个名为"user"的文本框,我们可以通过request.getParameter("user...

    asp无组件图片上传--可获取表单提交数据

    我上传的是一个留言板的实例,数据库连接为conn.asp;表单处理为submit.asp;外用类upload_asjob.asp处理图片上传; upload_5xsoft.inc 这个类集成了图片上传功能,...最重要的是还可以获取表单控件的内容!供大家学习

    表单数据传输方式

    ### 表单数据传输方式详解 #### 一、概述 在Web开发中,表单数据传输方式是一项基础且重要的技术。通常我们会在网页上使用表单来收集用户输入的信息,并将其发送给服务器进行处理。根据不同的应用场景和技术需求,...

    解决LayUI表单获取不到data的问题

    前几天用LayUI表单进行AJAX提交的时候发现,function(data)里的data始终无法获取表单里填的值,当时我认为是出BUG了就用了$(‘#updateform’).serialize()来获取表单数据 //form表单 更新员工信息 form.on('...

    jsf获取表单的两种方法

    在JavaScript Server Faces (JSF)框架中,获取表单数据是常见的操作,这对于处理用户输入、验证和业务逻辑处理至关重要。本文将详细讲解两种方法来获取JSF表单中的数据。 1. EL(Expression Language)表达式 EL是...

    表单数据自动封装到javaBean中

    在表单数据封装过程中,这些方法会被用来设置和获取属性值。 4. **前端框架集成**: 当前,许多Web应用采用前端框架(如Angular、React或Vue.js)进行视图层的构建。这些框架同样支持数据绑定,可以与后端的...

    ExtJs获取表单元素的值

    在本篇文章中,我们将深入探讨如何在ExtJs框架中有效地获取表单元素的值,并结合提供的代码示例进行详细解析。对于前端开发者来说,掌握如何高效地操作表单元素是必不可少的一项技能,尤其是在使用像ExtJs这样的强大...

Global site tag (gtag.js) - Google Analytics