gpt4 book ai didi

java - 如何在不离开页面的情况下从 servlet 返回一个字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:07:36 24 4
gpt4 key购买 nike

这是图片:

我有一个带有表单的 html/jsp 页面。

    <div id = "divAttributes">
<form id = 'fid' method = "post" action = "RunQuery">
Id Number: <input type= "text" name = "foo" id = "txtFoo"/><br/>
<input type = "checkbox" id = "chboxZap" value = "zap"/>Foo<br/>
<input type = "checkbox" id = "chboxBar" value = "bar"/>Bar<br/>
<input type= "submit" id = "btnSubmit" value = "submit" onclick = "setDisabled('divAttributes', true)"/><br/>
</form>
</div>

当用户按下提交按钮时,我想将表单中包含的信息发送到一个 servlet,然后它会做一些处理并返回一个字符串。

public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {

response.setContentType("text/plain");

ReturnCode rc = world.hello.MyMainClass.wait(request.getParameter("foo"));

/*I want to return the RC, which is a bool, a string, and another object, which in this case is a string*/
}

然后该字符串应该被发送到另一个 servlet,然后保存一个文件。

我已经有了用于保存文件的 servlet:

public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
response.setContentType("text/plain");
response.setHeader("Content-Disposition",
"attachment;filename=downloadname.txt");

ServletContext ctx = getServletContext();

String s = new String(request.getParameter("data"));

InputStream is = new ByteArrayInputStream(s.getBytes());

int read = 0;
byte[] bytes = new byte[BYTES_DOWNLOAD];

OutputStream os = response.getOutputStream();

while ((read = is.read(bytes)) != -1) {
os.write(bytes, 0, read);
}
os.flush();
os.close();
}

我有两个问题:

  1. 第二个 servlet 在被调用时不会重定向到新页面。它只是立即提供下载对话框。但是,当我调用第一个 servlet 时,它提供了一个空白的 html 页面。为什么?

  2. 如何将值从 servlet 返回到调用它的 HTML 页面,并从那里访问它们?

最佳答案

JavaScript,更具体地说,Ajax会帮助你。如果您包括一个具有良好 Ajax 支持的库——例如 jQuery -- 在 HTML 中,您可以在同一页面上调用您的 servlet。

因此,您可以调用一个 JavaScript 函数,该函数使用嵌套的 Ajax 发布到两个 servlet,而不是从按钮提交表单:

function submitForm() {
$.post( 'url/to/firstServlet', { text: $('#txtFoo').val() }, function(dataFromFirst) {
$.post( 'url/to/secondServlet', { data: dataFromFirst }, function(dataFromSecond) {
// handle response from second servlet
});
});
}

关于java - 如何在不离开页面的情况下从 servlet 返回一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28885535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com