java servlet post取值_Java servlet无法获得POST参数

参见英文答案 >

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代码有什么不对吗?如果这是一个服务器错误,我需要更改什么才能访问我的表单变量?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值