Java servlet无法获得POST参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java servlet无法获得POST参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2865字,纯文字阅读大概需要5分钟。
内容图文
![Java servlet无法获得POST参数](/upload/InfoBanner/zyjiaocheng/771/4a969ab48a2145eba0d4a3edb58cfc3b.jpg)
参见英文答案 > How to use Servlets and Ajax? 7个
我正在尝试创建一个简单的登录屏幕,其中包含电子邮件字段,密码字段和登录按钮(所有这三个都包含在< form />中).当用户提交表单时,客户端执行AJAX POST(异步,以便用户不必“遭受”页面重新加载!)到servlet.现在,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();
}
}
}
上面的代码打印了电子邮件/密码的空值.我阅读了几篇关于从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电子邮件变量,以及一个非空的密码变量,但同样,我在这里处于一个不熟悉的领域……
底线
我需要先弄清楚这是客户端还是服务器端的错误.这个问题试图将其诊断为服务器端错误,或者将其排除在外.那么,任何战斗厌倦的servlet老手都会看到HTTP请求或处理它的servlet代码有什么不对吗?如果这是一个服务器错误,我需要更改什么才能访问我的表单变量?
解决方法:
当您通过ajax提交表单时,您是以JSON格式发送数据吗?
如果您是,那么您应该从userId和password框中显式获取jquery或js文件中的数据,然后以JSON格式将其发送到服务器.那样可以解决问题.
内容总结
以上是互联网集市为您收集整理的Java servlet无法获得POST参数全部内容,希望文章能够帮你解决Java servlet无法获得POST参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。