gpt4 book ai didi

javascript - 计算后重新加载jsp页面

转载 作者:行者123 更新时间:2023-11-29 16:44:34 27 4
gpt4 key购买 nike

所以我的项目演示了 k-means 的结果使用 servlet 的聚类算法。当我第一次集群时,一切正常,我的程序将用户重新定位到 results.jsp页。

但是因为k-means在选择质心时有点随机,我添加了一个 re-cluster我的代码中的功能 results.jsp它使用最初使用的设置重新聚类我的数据。

我的重新聚类的 servlet 代码如下所示:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
do stuff...
//reload results page
String htmlResponse = "<html><header><meta http-equiv=\"refresh\" content=\"0; URL='results.jsp\" /></header></html>";
writer.println(htmlResponse);
//but this doesnt work...
}

所以在集群完成后,我想重新加载 resutls.jsp页。我尝试添加 JavaScript到我的jsp页自 refresh是客户端操作。但这种方法的问题是 refresh发生在聚类完全完成之前。所以我得到 Exceptions尝试打印结果时。有什么建议吗?

我的 refresh脚本看起来像这样:

<script type="text/javascript">
function refresh() {
location.reload(true);
}
</script>

<script type="text/javascript">
function reCluster(cluster_id) {
recluster();
}
</script>

.jsp 上我这样调用它:

<form class="form-horizontal" action="generateArff" method="GET" enctype="multipart/form-data">
<button type="button" class="btn btn-default btn-lg" onclick="reCluster(); refresh();">
<span class="glyphicon glyphicon-refresh"></span> Re-Cluster
</button>

<button type="submit" class="btn btn-info btn-lg">
<span class="glyphicon glyphicon-download"></span> Generate file
</button>
</form>

Can you advice on the matter?

最佳答案

所以,@MarcoBolis 提供了一个非常好的和信息丰富的答案,我肯定会得到 +1。

不过,我认为最简单的解决方案才是最有效的。

当我看到你的代码时,我只能假设你正在对你的 servlet 使用 AJAX 请求,因为我看到 1 html form有 2 个按钮,可以做不同的事情。所以,我要做的是转到您的 ReClusterServlet 并添加以下内容:

public class ReClusterServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
//Call your Cluster class and methods...
//wait for it...

//return something to your AJAX call.
writer.print("refresh page");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

现在,转到您的AJAX 请求。我假设它将在 recluster() 函数中,我看到您在 http 代码的 head 中调用。所以它一定是这样的:

function recluster() {
$.ajax({
url:'ReClusterServlet',
type:'POST'
});
}

这个东西,正在调用 servlet 但你知道当你的 servlet 完成计算后它会返回一个 success 消息给它吗???但是你忽略它!!!

就是这一行 writer.print("refresh page");

现在重写函数如下:

function recluster() {
$.ajax({
url:'ReClusterServlet',
type:'POST',
success:function() { //handle the successful return by reloading the current page
location.reload();
}
});
}

同样,这些都是推测,因为它们看起来有点不完整,所以如果我错了,请随时纠正我,但我有一种强烈的感觉,你需要更多地研究 客户端-服务器架构JQueryAJAX

关于javascript - 计算后重新加载jsp页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427491/

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