man*_*ane 2 java servlets scala playframework-2.0
我对 Play 和 Scala 还很陌生,遇到了一个问题,就像:简单的解释,
www.somesite.com/redirectedFoo //points to below controller
def redirectedFoo = Action{
//The http request needs to be traced here,
//and it needs to be accessed by a Java API method
val obj=new SampleMethod(--need http request obj as argument--)
//my problem is Play request and Http request are totally different 'objects',
//and the above method uses HttpServletRequest obj, how is this handled in Play
}
Run Code Online (Sandbox Code Playgroud)
对不起,我无法提供正确的解释,
就您的目的而言,Play 是错误的地方。Play 被设计为能够在 Servlet 容器之外运行,因此为 HTTP 请求实现了一个完全不符合 Servlet API 的 API。
您有两个选择:
编写您自己的函数,将 a 转换play.api.mvc.Request
为您自己的javax.servlet.http.HttpServletRequest
. 虽然HttpServletRequest
是一个相当大的接口,依赖于更大的类,但 Play 中包含的信息Request
应该足以构建一个HttpServletRequest
. 根据您的使用情况,您可能会保留一些或大多数方法未实现以减少工作量。以这个类为例。
如果您从 Servlet 运行 Play 2 应用程序并且您的方法允许,您可以编写自己的 Servlet 应用程序,在 Play 应用程序之前运行。然后它会在需要时使用您需要的 Servlet API 调用方法,并在不需要时将请求转发到 Play 2 应用程序。
这些都非常hacky,但对于单个用例可能是可以接受的。如果您需要与 Servlet API 集成或依赖大量其他代码,那么您真的需要问问自己 Play 2 是否是正确的选择。Play 2 可以支持任何 Java EE 技术,但特别是 Servlet API 是它不能很好支持的东西。如果您想使用现代 Scala HTTP 框架中的 Servlet API,您可能需要查看Spray 及其 servlet 支持。
归档时间: |
|
查看次数: |
787 次 |
最近记录: |