POST表单数据包括用于生成表单的GET参数

时间:2017-06-03 23:18:56

标签: java html spring forms http

这一次让我心烦意乱,现在我觉得我知道它是什么。

我有这个使用POST提交值的基本表单。

<form action="./change" method="post">
    <p class="fieldName">Username (your email address):</p>
    <input type="text" name="thetaname"/>
    <p class="fieldName">Password:</p>
    <input type="password" name="thetaword"/>
    <p class="fieldName">Confirm Password:</p>
    <input type="password" name="confirm"/>
    <input type="hidden" name="authkey" value="djj"/>
    <p class="errorMsg"></p>
    <br><br>
    <input type="submit" value="Submit"/>
</form>

并提交到最初创建表单的同一位置。问题似乎是表单最初是在URL上使用GET参数创建的,表单是POST。当我查看日志时,看起来GET参数包含在帖子中,我的Spring应用程序变得混乱。

我正在使用GET作为原件,因为我正在通过电子邮件发送给用户的链接。我在提交时使用POST,因为我想确保密码和内容都是加密的。

我在Spring启动前运行NGINX,它从提交中返回一个空字符串。

GET仅在我的方法中列为GET,在我的控制器中仅在我的方法上作为POST列出。

想法?

3 个答案:

答案 0 :(得分:0)

我不能说我完全理解你的问题,但这可能会有所帮助;

如果您使用Java作为服务器端技术,请将action属性更改为(action =&#34;更改&#34;)not(action =&#34; ./ change&#34;)。

答案 1 :(得分:0)

我假设您的控制器位于Servlet容器中。在这种情况下,Servlet将把url查询参数和POST参数结合在一起。您始终可以通过getParameterValues获取所有这些内容。另见这篇文章: How do I separate out query string params from POST data in a java servlet

答案 2 :(得分:0)

如果不是答案,我终于找到了解决办法。我只是将第二个更改重命名为change2并发布到change2。这似乎工作正常。