gpt4 book ai didi

Java servlet 无法获取 POST 参数

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:45 24 4
gpt4 key购买 nike

<分区>

我正在尝试创建一个简单的登录屏幕,其中包含一个电子邮件字段、一个密码字段和一个登录按钮(所有三个都包含在 <form/> 中)。当用户提交表单时,客户端对 servlet 执行 AJAX POST(异步以便用户不必“遭受”页面重新加载!)。目前,servlet 只是进行虚拟检查,如果用户成功登录则返回“1”,如果电子邮件/密码错误则返回“0”。然后客户端处理响应(同样,将是 0 或 1)。

发生的事情是这样的:当我提交表单时,servlet 收到 HTTP POST 请求,但电子邮件/密码字段显示为 NULL:

public class SigninService extends HttpServlet {
private static final long serialVersionUID = 1L;

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
PrintWriter writer = null;
try {
writer = response.getWriter();
JSONSerializer serializer = new JSONSerializer();

System.out.println("\tFetching POST data...");
String email = request.getParameter("email");
System.out.println("\tEmail is " + email + "...");
String password = request.getParameter("password");
System.out.println("\tPassword is " + password + "...");

Integer answer = null;
// Dummy check; will replace with actual code once I get this example working...
if("testing@example.com".equals(email) && "12345".equals(password))
answer = 1;
else
answer = 0;

System.out.println("\tSerializing the HTTP response...");
String json = serializer.deepSerialize(answer);

System.out.println("\tSending response back to client...");
writer.write(json);
} catch (Throwable throwable) {
System.err.println(throwable.getMessage());
throwable.printStackTrace();
} finally {
writer.close();
}
}
}

以上代码打印null电子邮件/密码的值。我阅读了几篇关于从 HttpServletRequest 中提取 POST 数据的文章(特别是 this 文章以及 this 一篇),它们似乎都没有帮助我。两者似乎都建议使用 request.getReader()方法,但这不是我需要的。我需要一种方法来直接访问表单变量及其各自的值。

我不知道我的客户端代码是否错误地格式化了 POST 请求并以 Java servlet 无法处理的方式发送了表单数据,或者 Java servlet 是否没有正确编码来处理请求。

当我运行 Firebug 并提交表单时,这里是 Post 的内容与请求关联的选项卡:

-----------------------------18671963685702-some-really-long-number
Content-Disposition: form-data; name="email"

testing@example.com
-----------------------------18671963685702-another-really-long-number
Content-Disposition: form-data; name="password"

12345
-----------------------------18671963685702-and-another-really-long-number--

对于未经训练的人来说,这看起来就像客户端正确地发送了一个非 NULL email变量,以及一个非 NULL password可变的,但我再次来到陌生的领域......

底线

我需要先弄清楚这是客户端错误还是服务器端错误。这个问题是试图将其诊断为服务器端错误,或将其排除在外。那么,是否有任何厌倦战斗的 servlet 老手看到 HTTP 请求或处理它的 servlet 代码有什么问题?如果这是服务器错误,我需要更改什么才能访问我的表单变量?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com