我的情况是需要引入一个中间servlet来处理来自现有项目的请求,并将操纵的响应重定向到现有项目或新项目。这个servlet将作为接口登录从其他应用程序进入新项目。
所以目前我使用以下代码将jsp中的响应作为xml返回。
var jqxhr =$.post("http://abhishek:15070/abc/login.action",
{ emailaddress: "ars@gmail.com",
projectid: "123" },
function(xml)
{
if($(xml).find('isSuccess').text()=="true")
{
sessiontoken=$(xml).find('sessiontoken').text();
setCookie("abcsessionid", sessiontoken , 1);
setCookie("abcusername",e_add,1);
}
}
)
.error(function() {
if(jqxhr.responseText == 'INVALID_SESSION') {
alert("Your Session has been timed out");
window.location.replace("http://abhishek:15070/abc/index.html");
}else {
alert( jqxhr.responseText);
}
});
xml内容
<Response>
<sessiontoken>334465683124</sessiontoken>
<isSuccess>true</isSuccess>
</Response>
但现在我希望使用servlet完成同样的事情,这可能吗?
String emailid=(String) request.getParameter("emailaddress");
String projectid=(String) request.getParameter("projectid");
更新
我想出了点什么。
是否可以返回带有表单的html页面(来自servlet),其on body load
它将提交表单,并且在提交此表单时,它将收到响应 xml 将被处理。
答案 0 :(得分:3)
使用java.net.URLConnection
或Apache HttpComponents Client。然后,使用诸如JAXB之类的XML工具解析返回的HTTP响应。
开球示例:
String emailaddress = request.getParameter("emailaddress");
String projectid = request.getParameter("projectid");
String charset = "UTF-8";
String query = String.format("emailaddress=%s&projectid=%s",
URLEncoder.encode(emailaddress, charset),
URLEncoder.encode(projectid, charset));
URLConnection connection = new URL("http://abhishek:15070/abc/login.action").openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset);
try {
connection.getOutputStream().write(query.getBytes(charset));
}
finally {
connection.getOutputStream().close();
}
InputStream response = connection.getInputStream();
// ...
答案 1 :(得分:0)