如果我使用浏览器向服务器发送信息(例如使用登录,密码页面),我只需填写用户文本框和密码文本框,然后单击登录按钮。
我想发送此信息,但无需使用浏览器。我想'填充'文本框,但无需在浏览器中手动完成。可能正在使用Servlet。
我的问题是:如何在文本框中发送信息,例如,从Servlet发送到网站?
答案 0 :(得分:8)
为什么不使用像URL这样的网址从Java调用http://your.domain.name/your/servlet/path?userFieldName=THE_VALUE_YOU_WANT_TO_PASS&passwdFieldName=PASSWORD
servlet会感觉价值来自那些盒子。
或者您可能希望深入Apache HTTP Client来模仿客户发送的请求。
呃......你在做功能测试吗?为什么不关注JMeter?根据评论进行更新
您需要知道what actually form submission does?它基本上形成一个由键值(KV)对组成的查询字符串。
因此,如果您有一个名为tfield
的文本字段,其中用户已键入some text
,并且有一个名为ddfield
的下拉列表,其中用户已选择optionX
值optionX-Val
。此表单将提交到URL http://my.domain.name/my/servlet
- 浏览器将发送一个看起来像
http://my.domain.name/my/servlet?tfield=some%20text&ddfield=optionX-Val
如果您想模仿表单提交,则必须手动创建一个URL,其中包含一个请求字符串,其中包含所有字段及其值,因为FIELD_NAME = FIELDVALUE有序对由&符号分隔(&)
希望这有帮助。
答案 1 :(得分:2)
我不清楚你到底在做什么。我假设servlet将是发送数据的人。这里有一些例子。
使用setAttribute然后转发请求
//On your servlet
request.setAttibute('user', 'admin');
request.setAttribute('password', '123');
getServletContext().getRequestDispatcher("page.jsp").forward(request, response);
//On your jsp page get the value using EL
<span>${user}</span>
使用会话
//On your servlet
HttpSession session = request.getSession(true);
session.setAttribute('user', 'admin');
session.setAttribute('password', '123');
getServletContext().getRequestDispatcher("page.jsp").forward(request, response);
//On your jsp page get the value using EL
<span>${user}</span>
以上示例旨在在Web应用程序中工作。将信息发送到另一个期望请求的Web应用程序。见下面的示例。
//On your jsp or servlet, you can also do the same within web application
request.sendRedirect('http://example.com?user=admin&password=123');
//on your jsp @example.com
<span>${param.user}</span>
如果这不是您的意思,添加更多详细信息将有所帮助。
答案 2 :(得分:1)
servlet处理另一端:它基本上是一个生成在servlet容器内的http请求的处理程序。如果我理解正确,您需要发送http请求。你可以使用curl
之类的命令行工具来做到这一点,或者如果你想留在java土地上,你可以试试this example on exampledepot。使用您最喜欢的搜索引擎搜索更多示例,例如搜索条件,例如“通过网址发送GET请求”。
在您需要发送用户名和密码信息的情况下,您需要查看html并找到form
元素的action
属性的网址。然后,您需要找到用户名和密码字段的名称。使用这些名称作为url参数,您可以构造一个模仿发送表单的GET请求。
注意:通常在代码中以明文形式存储密码和/或以纯文本形式将密码发送到网站上并不是一件好事。
答案 3 :(得分:0)
万一有人感兴趣,有一个名为Tamper数据的Firefox插件。有了它,你可以停止发送和http请求并修改它。它将向您显示发送参数所需的“网址”,它们当前具有的值以及它们的名称。你可以查看here。之后,您可以使用request.sendRedirect('url you got from Tamper Data');