Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
在单个web应用程序中从servlet检索JSP内容(在Tomcat下)_Jsp_Tomcat_Servlets - Fatal编程技术网

在单个web应用程序中从servlet检索JSP内容(在Tomcat下)

在单个web应用程序中从servlet检索JSP内容(在Tomcat下),jsp,tomcat,servlets,Jsp,Tomcat,Servlets,首先,我想为我对这个问题的描述不够清晰而道歉。让我们考虑一些电子邮件发送的工作机制,我们也有一些基于JSP处理引擎的电子邮件模板机制。比如说,这些模板可以直接访问,并且总是返回一个HTML,可以在后端代码中插入到某个用户的电子邮件中。简单地说,简写代码可能如下所示: Map<String, String> parameters = new HashMap<String, String>() {{ ..puts.. }}; String message = readJsp(

首先,我想为我对这个问题的描述不够清晰而道歉。让我们考虑一些电子邮件发送的工作机制,我们也有一些基于JSP处理引擎的电子邮件模板机制。比如说,这些模板可以直接访问,并且总是返回一个HTML,可以在后端代码中插入到某个用户的电子邮件中。简单地说,简写代码可能如下所示:

Map<String, String> parameters = new HashMap<String, String>() {{ ..puts.. }};
String message = readJsp("/templates/template1.jsp", parameters); // servlet-context?
sendEMail(recipient, subject, message)
Map parameters=newhashmap(){{..put..};
String message=readJsp(“/templates/template1.jsp”,parameters);//servlet上下文?
发送电子邮件(收件人、主题、邮件)
目前,我找到了两种实现
readJsp
方法的解决方案。第一种方法是从servlet向web服务器发出HTTP请求,servlet和JSP模板都放在web服务器上。嗯,我不喜欢这个

第二种更好的方法是从servlet上下文中获取一个请求分派器,并使用响应包装器调用其
include()
方法(下面介绍了这种解决方法)。这个方法工作得很好,但是如果我不能得到一个<代码> HttpServletRequest < /COD>和<代码> HttpServletResponse < /Cord>实例(让我们考虑我的代码> SeNeMeMe)(/Cord>)可以从servlet <代码> Service < /Cord>方法中调用[很容易在这里得到HTTPservlet请求/响应实例],那么我不知道如何使用这种方法。以及作为web应用程序一部分运行的线程[其中HttpServletRequest/Response实例从未已知,甚至无法传递给该线程])。我可以建议我自己以某种方式创建
HttpServletRequest
/
HttpServletResponse
实例,但我不知道基于second方法的
readJsp()
方法如何以及是否合适

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


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

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


我建议在您无法访问请求/响应对的情况下,不要使用JSP。而不是使用或模板电子邮件。

也可能是@ eRICACM的副本,认为我既没有原始请求也没有原始响应对象,因为我有一个线程无法接受请求和请求。而且。。。JSP输出不会传输到客户端。JSP输出应该放在发送者线程发送的电子邮件正文中。实际上,我选择了JSP,因为它可以很好地集成到我们在项目中实现的i18n机制中(大多数JSP页面已经使用它进行了i18n编辑)。我在FreeMarker方面有点经验,在速度方面没有经验。但我会看一看。谢谢。Velocity引擎已经参与进来了,尽管我仍然无法获得使用JSP引擎所获得的一些效果。谢谢