Java 用线程执行完成后返回的值填充Spring模型属性
我正在使用Spring3.0框架 我有一个关于线程及其结果的问题。 我的项目有许多控制器及其方法 我已经创建了一个线程,它将在Controller的一个方法中被调用,我希望它的结果应该添加到model属性中,因为我希望在JSP中显示结果 问题是,虽然我在模型属性位中添加了线程结果,但在JSP中它的结果是空的。因为use当前未使用该控制器 例:Java 用线程执行完成后返回的值填充Spring模型属性,java,spring,jakarta-ee,Java,Spring,Jakarta Ee,我正在使用Spring3.0框架 我有一个关于线程及其结果的问题。 我的项目有许多控制器及其方法 我已经创建了一个线程,它将在Controller的一个方法中被调用,我希望它的结果应该添加到model属性中,因为我希望在JSP中显示结果 问题是,虽然我在模型属性位中添加了线程结果,但在JSP中它的结果是空的。因为use当前未使用该控制器 例: Spring Controller{ //mapping String controllerMethod1(Model mode
Spring Controller{
//mapping
String controllerMethod1(Model model){
}
//mapping
String controllerMethod2(Model model){
//thread will calling on this controller method
//new myThread
var result=new myThread.start();
model.addattr("res",result);
}
//mapping
String controllerMethod3(Model model){
}
//mapping
String controllerMethod4(Model model){
}
//mapping
String controllerMethod5(Model model){
}
}
有许多这样的控制器
在每个控制器的每个返回JSP页面中,我有${res}
来显示线程返回结果
请给我合适的解决方案,谢谢
我知道Spring3.2中有不同的结果概念,但Spring3.0中没有。
请给我其他解决方案,如Deferedresult如果我理解正确,您不希望模型包含
线程
对象,而是希望它包含线程计算的结果。您需要查看未来的类。但即便如此,我也怀疑这对你会有多大帮助;JSP呈现代码将在控制器方法返回后很快获得线程的结果,因此计算值的时间不会太长。您需要重新考虑使用线程的原因。如果我理解正确,您不希望模型包含线程
对象,而是希望它包含线程计算的结果。您需要查看未来的类。但即便如此,我也怀疑这对你会有多大帮助;JSP呈现代码将在控制器方法返回后很快获得线程的结果,因此计算值的时间不会太长。您需要重新考虑为什么要使用线程。我暂时找到了解决方案,但我希望更好。。。
我的解决方案:
我正在使用ExcecutorService创建单线程。该服务一次执行一个线程。每个线程完成后,我将在会话中添加结果,并在显示会话结果后删除该会话属性
就这样 我暂时找到了解决方案,但我想要更好的。。。
我的解决方案:
我正在使用ExcecutorService创建单线程。该服务一次执行一个线程。每个线程完成后,我将在会话中添加结果,并在显示会话结果后删除该会话属性
就这样而不是自己创建线程,考虑使用线程池(参见<代码> ExtutoService < /Class >类)。我正在使用线程池,但重要的是,我希望在JSP页面上显示结果而不是自己创建线程,考虑使用线程池(参见<代码> ExtutoService < /Class >类)。。我正在使用线程池,但重要的问题是,我希望结果显示在JSP页面上,因为该过程需要时间,而且我们不想打扰用户,因此我们正在使用线程,完成后我们只想通知用户该过程已完成。您不能使用HTTP和纯HTML进行此操作。您不能告诉用户“请等待结果…”,然后在一段时间后用实际结果替换该消息。HTTP是一种请求-响应协议,因此无法向客户端(web浏览器)发送更新的响应。您可以使用AJAX实现这一点。但是使用线程对您没有帮助。我们没有显示请稍候…这就是为什么我们在后台使用线程,只是想显示结果我认为您对HTTP和JSP的工作方式有一个根本性的误解。我想要的解决方案与spring 3.2中的解决方案不同。但我使用的是spring 3.0。所以我想要替代方案?因为这是一个过程需要时间,我们不想打扰用户,因此我们使用线程,完成后我们只想通知用户进程已完成。您不能使用HTTP和纯HTML来完成。您不能告诉用户“请等待结果…”,然后在一段时间后用实际结果替换该消息。HTTP是一种请求-响应协议,因此无法向客户端(web浏览器)发送更新的响应。您可以使用AJAX实现这一点。但是使用线程对您没有帮助。我们没有显示请稍候…这就是为什么我们在后台使用线程,只是想显示结果我认为您对HTTP和JSP的工作方式有一个根本性的误解。我想要的解决方案与spring 3.2中的解决方案不同。但我使用的是spring 3.0。所以我想要替代方案?