Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
J2EE/JSP控制流问题_Jsp_Servlets - Fatal编程技术网

J2EE/JSP控制流问题

J2EE/JSP控制流问题,jsp,servlets,Jsp,Servlets,我对J2EE(虽然不是Java)相当陌生,我有一个问题,我想和你们中的一些专家谈谈。我读了很多教程,但还是有点不清楚。情况是这样的 我继承了一个jsp,它生成存储在数据库中的一些数据的html表示。我需要修改它,这样,如果传递了某个请求参数,那么除了生成html表示之外,它还将生成数据的替代表示(pdf格式),并通过发送到url返回给用户,url也将在请求参数中指定。因此,我要做的(当指定这两个额外参数时)是首先返回HTML表示,然后调用一个单独的jsp/servlet,它将负责生成PDF视图并

我对J2EE(虽然不是Java)相当陌生,我有一个问题,我想和你们中的一些专家谈谈。我读了很多教程,但还是有点不清楚。情况是这样的

我继承了一个jsp,它生成存储在数据库中的一些数据的html表示。我需要修改它,这样,如果传递了某个请求参数,那么除了生成html表示之外,它还将生成数据的替代表示(pdf格式),并通过发送到url返回给用户,url也将在请求参数中指定。因此,我要做的(当指定这两个额外参数时)是首先返回HTML表示,然后调用一个单独的jsp/servlet,它将负责生成PDF视图并将其发布回客户端

我的困惑在于如何将控制权从初始jsp传递到新jsp,这样一来,第一个jsp就不会在附加处理中被阻塞,而且即使PDF文件正在编写,客户端也会收到HTML视图。这有什么意义吗

我目前的计划是检查jsp最底层的scriptlet中的参数,如果参数为“true”,则使用ApacheHttpClient将请求发布到负责生成PDF的jsp/servlet(在同一web应用程序中运行)。然后,该servlet将使用HttpClient将成品发布回客户机。我不知道这是否真的是正确的方法,或者它是否会起作用,这就是为什么我要发布这个问题。如有任何意见或建议,我们将不胜感激


谢谢

我认为最好只生成HTML输出,并在输出中的某个地方放置到第二个Servlet的链接,该Servlet生成PDF。这样,如果用户真的想检索PDF版本,可以单击提供的链接检索PDF


如果您的需求是在用户尝试检索HTML版本时生成PDF,那么最好将请求放在JMS队列中,该队列将生成PDF版本的适当结果,并将它们存储在临时位置。当用户单击PDF版本的下载链接时,您只需获取结果(通过JMS生成)并将其作为结果发送回来。

Hi Moghadam。感谢您抽出时间回复。事实上,我们确实讨论过按照您的建议加入链接,但其他各方不想这样做。这里的客户机实际上不是浏览器的最终用户,而是一个不同的java web应用程序,交易是,如果该标志通过,他们肯定需要pdf。JMS的想法很有趣,但这只是对一个已经存在的大型web应用程序的一个小小的增强,我不认为添加一项新技术会成功:)我感到困惑。您希望在结果页面的末尾有一个scriptlet,它向生成PDF的servlet/jsp发送另一个请求。让我知道,您希望如何将第二个servlet的输出放在结果页面中?PDF输出是一个二进制数据,如果必须将其放在结果页面中的某个位置,则必须与客户端应用程序有一个通用协议,以便从结果页面正文中提取结果。它可能类似于一个隐藏的标记,其中包含PDF文件的Base64表示形式。你认为我正确地理解了你的问题吗你好。毫无疑问,你很困惑,因为我的帖子不清楚。无论如何,我希望PDF不包含在结果页面中,而是在servlet启动的单独post操作中返回。因此,在我的场景中,根据客户端传递的标志,可能会有三个请求:(1)客户端对生成html的jsp发出的初始请求,(2)jsp对运行在web应用程序中负责生成pdf的其他servlet发出的请求,然后(3)由该servlet发起的将结果发送回客户端应用程序的请求。让我觉得这行不通的是,我不希望jsp必须等待pdf生成完成。我希望它在生成pdf的servlet上发布后立即将html返回给客户端。因此,您必须进行某种异步方法调用,这可以通过JMS或其他线程实现。初始jsp页面中的任何方法调用都将被阻塞,必须等待请求完成