当你在你可以使用getparameterxxx()在一个简单的地方获得任意查询字符串或POST数据一个servlet的doGet一个或doPost调用。结果 如果调用一个GET,你从URL /查询字符串的数据。结果 如果调用一个POST,你得到这个职位,所有的数据分析出你。

除非事实证明,如果你不把一个“行动”属性在窗体调用。 如果指定一个完全合格的或部分限定网址为行动PARAM一切都很正常,如果你不这样做,浏览器将调用相同的URL,因为它没有前一个页面上提交,如果刚好有没有查询字符串数据,你会得到和POST数据,而且也没有办法告诉他们分开。

或者是有? 我期待通过请求对象,我看到后的数据从何而来,我只是试图找出其中GET数据从何而来,所以我可以擦除后调用get数据和删除数据后一个GET调用它解析出来,如果可能的前

任何想法,安全的方式来做到这一点?

和还是让我猜一下,你从来没有试图不把动作领域的表单标签。 : - )

有帮助吗?

解决方案

在HTML中,动作是 REQUIRED ,所以我想的行为将客户端之间变化。

其他提示

您说得对,我从来没有试图不把动作领域的表单标签;-)我也不会,因为正是你在说什么的。 (另外,我认为这是不合法的HTML)

我不知道任何“干净”的方式GET和POST参数来区分,但可以使用getQueryString()HttpServletRequest方法访问原始查询字符串,你可以使用的方法getInputStream()访问原始POST数据ServletRequest。 (我看Tomcat的API文档专门在这里,虽然我认为这些都是标准的Servlet API中的两部分),然后你可以解析POST数据,如果你想单独获取数据。它们将(或通常应)两者被格式化以同样的方式,即

name1=value1&name2=value2&...

虽然可能用分号取代符号(您可以在HTTP / 1.1在技术上做的,我不知道,直到最近)

在HttpServletRequest.getParameterxxx()方法不GET和POST参数之间进行区分。如果你真的需要区分它们,你需要手动解析他们使用getQueryString()的GET参数的getInputStream()/ getReader()的POST数据。

我会写ServletFilter中和(用什么希尔顿上面所建议的)装饰请求对象清理了一点东西。这是 rel="nofollow noreferrer">经典装饰图案。

scroll top