微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在单个Web应用程序中在Tomcat下从servlet检索JSP内容

| 首先,我想对问题的描述不够清楚表示歉意。让我们考虑一下,我们有一些用于发送电子邮件的工作机制,也有一些基于JSP处理引擎的电子邮件模板机制。假设可以直接访问这些模板,例如http://localhost/app/templates/template1.jsp?k1 = v1&k2 = v2,并且始终返回可以插入特定用户电子邮件的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向Web服务器发出HTTP请求,Web服务器将同时放置Servlet和JSP模板。好吧,我不喜欢这个... 实际可行的第二种更好的方法是从Servlet上下文中获取请求分派器,并使用响应包装器调用
include()
方法(此变通方法在此处描述)。该方法可以完美地工作,但是如果我无法获得
HttpServletRequest
HttpServletResponse
实例,我不知道如何使用该方法(让我们考虑一下可以同时从Servletѭ6方法调用我的
sendEMail()
方法[这很容易以在此处获取HttpServletRequest / Response实例]和作为Web应用程序的一部分运行的线程[其中从未知道HttpServletRequest / Response实例,甚至无法将其传递给线程]。我可以建议我可以自己创建
HttpServletRequest
/
HttpServletResponse
实例,但是我不知道基于第二种方法的how9ѭ方法如何以及是否可以。 因此,问题基本上是关于从不属于servlet但在同一Web应用程序中运行的线程中获取JSP内容的第三种方法(甚至更好)。还是可以从头开始创建有效的
HttpServletRequest
/
HttpServletResponse
实例,以使第二种方法在Servlet
service()
方法之外起作用? 有任何想法吗?提前致谢。     

解决方法

您可以尝试使用Spring \的MockHttpServletRequest / Response,但是据我所知,Tomcat \的ServletDispatcher.include()不适用于那些。 如果您无权访问请求/响应对,建议不要使用JSP。而是使用Velocity或Freemarker对电子邮件进行模板化。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。