是否有任何 Scala JSP 引擎,或者将有任何引擎?
我知道 Scala Web 框架提升,但它似乎更像是标签。
我正在寻找一种编写像 PHP 这样的脚本的方法。
谢谢。
最佳答案
编辑:检查 http://scalate.fusesource.org/index.html :Scala 模板引擎:像 JSP 一样没有废话,但增加了 Scala 的酷炫。我只是在查看#scala 推特提要时偶然发现了这一点。
你可以看看http://github.com/alandipert/step .它看起来像是一个活跃的项目,足以让您编写与 xhtml 代码混合的 Scala 代码。你是否可以像 PHP 一样编写脚本,我不知道。不同之处之一是,对于 JSP/PHP,您在 HTML 页面中包含一个程序,与 step
一样。你包括一些 xml
放入 Scala 文件。
使用 Scala 和 sbt
会有一些学习曲线。但我认为利用 Scala 是值得的。
您可以做的另一件事是编写一个自定义 JSP 标记,让您可以通过解释器运行一些 Scala 代码。我做了一个概念证明,这似乎有效:
/**
* Proof of concept, you can run Scala code in a JSP tag.
* Works with jetty and sbt.
*/
class ScalaScriptTag extends BodyTagSupport {
override def doAfterBody():Int = {
try {
val settings = new Settings(str => println(str))
// interpreter classloader does not seem to pick up classes from the parent
settings.classpath.value =
"lib_managed/compile/jsp-api-2.1-6.1.14.jar;" +
"lib_managed/compile/servlet-api-2.5-6.1.14.jar"
var i = new Interpreter(settings) {
override def parentClassLoader():ClassLoader = {
return Thread.currentThread().getContextClassLoader();
}
}
i.bind("pageContext", "javax.servlet.jsp.PageContext", pageContext)
val source = Source.fromString(getBodyContent.getString)
for (line <- source.getLines) { i.interpret(line) }
} catch {
case ioe: IOException =>
throw new JspException(ioe.getMessage())
}
Tag.SKIP_BODY
}
}
关于jsp - 如何直接在 JSP 页面中编写 Scala 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2160106/