gpt4 book ai didi

jsp - 从单个 Web 应用程序中的 servlet 检索 JSP 内容(在 Tomcat 下)

转载 作者:行者123 更新时间:2023-11-28 22:45:32 30 4
gpt4 key购买 nike

首先,对于问题的描述不是很清楚,我深表歉意。假设我们有一些电子邮件发送的工作机制,我们也有一些基于JSP 处理引擎的电子邮件模板机制。比方说,这些模板可以http://localhost/app/templates/template1.jsp?k1=v1&k2=v2一样被直接访问。并始终返回一个 HTML,该 HTML 可以在后端代码中插入到特定用户的电子邮件中。简而言之,速记代码可能如下所示:

Map<String, String> parameters = new HashMap<String, String>() {{ ..puts.. }};
String message = readJsp("/templates/template1.jsp", parameters); // servlet-context?
sendEMail(recipient, subject, message)

目前我找到了两种实现readJsp方法的方案。 第一种方法是从 servlet 向放置 servlet 和 JSP 模板的 Web 服务器发出 HTTP 请求。好吧,我不喜欢这个......

第二种也是更好的真正有效的方法是从 servlet 上下文中获取请求调度程序并使用响应包装器调用其 include() 方法(此解决方法描述为 here )。这种方法非常有效,但如果我无法获得 HttpServletRequestHttpServletResponse 实例,我不知道如何使用这种方法(让我们考虑一下我的 sendEMail() 方法可以从 servlet service 方法[这里很容易获得 HttpServletRequest/Response 实例] 和作为 web 一部分运行的线程调用应用程序 [其中 HttpServletRequest/Response 实例从未已知,甚至无法传递给线程])。我可以建议我可以以某种方式自己创建 HttpServletRequest/HttpServletResponse 实例,但我不知道如何以及是否适合 readJsp() 方法基于第二种方法。

因此,问题基本上是关于从不属于 servlet 但在同一 Web 应用程序中运行的线程获取 JSP 内容的第三种(甚至更好)方法。或者是否可以从头开始创建有效的 HttpServletRequest/HttpServletResponse 实例,使 second 方法在 servlet service() 方法?

有什么想法吗?提前致谢。

最佳答案

您可以尝试使用 Spring 的 MockHttpServletRequest/Response,但据我所知,Tomcat 的 ServletDispatcher.include() 不适用于这些。

如果您无权访问请求/响应对,我建议不要使用 JSP。而是使用 VelocityFreemarker为您的电子邮件制作模板。

关于jsp - 从单个 Web 应用程序中的 servlet 检索 JSP 内容(在 Tomcat 下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650174/

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