如何在Java servlet中以编程方式提交表单?

我有一个java servlet,它从域A中的一个网页获取表单请求,它将处理表单,并以另一种形式将结果作为请求发送到域B中的另一个网页。如何在Java servlet中以编程方式提交表单?

I想知道如何在Java servlet中以编程方式提交表单?我试图使用

javax.servlet.RequestDispatcher.forward(request, response) 

但它不起作用,因为它只能转发到同一个域中的资源。

回答:

使用Apache HttpClient为

从tutorial代码尝试看起来像:

HttpClient client = new HttpClient(); 

GetMethod method = new PostMethod(url);

int statusCode = client.executeMethod(method);

... etc

有选项吨的自定义它。

回答:

尝试一个JavaScript自动提交通过的Servlet域A.返回形式

域一个servlet:

public void doPost(HttpServletRequest req, HttpServletResponse resp) { 

PrintWriter p = resp.getPrintWriter();

p.print("<form id='f' action=[URL on domain B to login]><input type='secret' name='username' value='" + username+ "'/><input type='secret' name='password' value='" + password + "'/></form>");

p.print("<script type='text/javascript'>document.getElementById('f').submit()");

}

这不是最完美的解决方案,但如果你正在寻找的东西更多企业可以尝试使用OpenSSO或CAS等SSO解决方案。

回答:

您需要对新域进行自动发布。只需将请求转发给JSP这样,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<body onload="document.forms[0].submit()">

<noscript>

<p>

<span>Note:</span> Since your browser does not support JavaScript,

you must press the Continue button once to proceed.

</p>

</noscript>

<jsp:useBean id="myBean" scope="request" class="example.myBean" />

<form action="<jsp:getProperty name="myBean" property="url"/>" method="post">

<div>

<input type="hidden" name="field1" value="<jsp:getProperty name="myBean" property="field1"/>"/>

...

</div>

<noscript>

<div>

<input type="submit" value="Continue"/>

</div>

</noscript>

</form>

</body>

</html>

的“为myBean”包含了重定向URL,需要发布到其他域的域值。

回答:

大问题在这里:你是否想把请求交给其他站点而不用担心进一步的响应?或者您是否仍想完全控制响应,以便您可以像在自己的域中完成一样呈现?这在你的主题开始时没有明确说明。

如果第一个,然后使用上述Javascript自动提交上载的方法。如果第二个,然后使用上述HttpClient建议(或者如果你知道HTTP足够好,你也可以使用java.net.URLConnection)。

以上是 如何在Java servlet中以编程方式提交表单? 的全部内容, 来源链接: utcz.com/qa/259156.html

回到顶部