输入类型“隐藏”vs文本区域

时间:2009-06-11 19:15:58

标签: http jsp tomcat

我有一个隐藏输入类型的奇怪问题,并且想知道是否有人曾经见过这样的事情。我以逗号分隔的格式将大约2MB的数据保存到隐藏字段,然后我将该数据发布到只设置一些标题的jsp(因此输出被识别为excel文件),然后回显数据

我看到保存此数据的变量对jsp端是空的,即使我看到它已经发布到服务器(我用HTTP嗅探器看到它)并且所有数据似乎都被包含正确地在隐藏的领域(我用萤火虫看到了)。但是,如果我将对象类型更改为文本区域,则会在服务器端正确接收数据。

我观察到的另一个奇怪的事情是,如果我对数据使用URL编码,即使使用文本区域,也没有任何内容可以访问服务器。如果我不使用URL编码但我有隐藏字段,则没有任何内容保存到字段中(当我用firebug检查它时它是空的)。我也不明白......

我想知道是否有任何特殊的安全设置可以防止隐藏字段将大量数据发布到Tomcat Web服务器。有人知道这件事吗?

如果它有任何区别,我在表单上使用默认的enctype(application / x-www-form-urlencoded)

我目前正在使用文本并将样式设置为“隐藏”的可见性但是我不理解发生了什么*叹息......任何建议都表示赞赏

2 个答案:

答案 0 :(得分:4)

我认为在隐藏字段中拥有2MB数据是错误的。作为会话状态的一部分,您应该将这种事物存储在服务器上,而不是像服务器那样在服务器和用户之间来回发送。相反,使用隐藏字段或cookie作为会话变量*,它将用于查找2MB数据。

*不要手动执行此操作。 JSP已经支持会话状态等等。

答案 1 :(得分:0)

服务器无法区分textarea和textbox。所有表单元素都只是作为名称/值对发布。

最有可能的是,数据中的某个地方有一个双引号,它终止了隐藏输入元素的value属性。例如:

<input type="hidden" value="Double " quote" />

您需要使用&quot;

替换双引号来转义双引号
<input type="hidden" value="Double &quot; quote" />