English 中文(简体)
以编程方式调用JSP解析器
原标题:Programmatically invoke the JSP parser

我想以编程方式调用JSP解析器。这意味着我希望能够在Java中运行一个jsp页面并获得其输出,而无需将其发送回客户端(我实际上想将输出保存到一个文件中)。我不想将请求转发到JSP页面。我希望能够在一行的几个JSP页面上做到这一点。

做这件事最好的方法是什么?

我发现了这个问题,但BalusC并没有直接回答这个问题。

如果您想知道,我之所以需要这样做,是因为我想预编译JSP,以便在Java servlet容器之外的其他平台上使用。

编辑

我需要的不是.class文件,而是HTML输出。事实上,一旦生成,它将是静态的,但我有一些自定义的jsp标记,我想利用jsp解析器来扩展它们。

问题回答

我不确定我是否理解这一切的意义。

JSP被解析并预编译为<code>.class</code>文件。在这一点上,它们是Java servlet。您需要一个servlet引擎来执行它们。

如果您的意图是将生成的HTTP响应捕获为“预编译”响应,则表明没有动态内容,并且每次发送特定请求时响应都是相同的。如果是这样的话,那么您得到的就是静态HTML。

如果我是对的,这似乎是一个糟糕的方式来产生这样的东西。

如果您希望将JSP预编译为.class文件,那么问题是不同的JavaEE应用程序服务器使用不同的JSP预编译引擎。您不能使用Tomcat预编译JSP并在WebLogic上使用它们。

从jsp页面获取html输出的最佳方法是将其实际部署到真正的Web服务器,然后调用该页面并保存呈现的输出。

如果您想自动化其中的某些部分,您可能需要考虑使用通过真实界面进行练习的测试工具,例如或模拟浏览器的,如HttpUnit

但这不仅仅是调用JSP编译器。

是动态生成的JSP。如果是这样的话,那么您就陷入了一个潜在的不利境地,您的JSP将被一次又一次地编译,从而导致性能问题。

但是,如果您可以拥有一个包含准备显示所需的所有规则的大型JSP,那么您可以使用HttpClient对自己的JSP进行调用,并返回HTML。这将确保您不依赖于应用程序服务器。如果您使用JSP Parser,您将依赖于供应商。

但是,如果您的JSP是动态构建的,那么您应该考虑可以在Java端生成HTML的选项。但是,如果它涉及到基于规则的HTML创建,那么最好用Java创建它。为此,您可以使用Apache Jakarta ECS库。

是的,JSP并不是为了这个目的。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签