gpt4 book ai didi

java - 玩2.2.2(Scala),如何处理HttpServletRequests

转载 作者:行者123 更新时间:2023-11-30 07:09:17 25 4
gpt4 key购买 nike

我是 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
}

抱歉,我无法提供正确的解释,

最佳答案

就您的目的而言,Play 是错误的去处。 Play 旨在能够在 Servlet 容器之外运行,因此实现了一个完全不符合 Servlet API 的 HTTP 请求 API。

你有两个选择:

  1. 编写您自己的函数,将 play.api.mvc.Request 转换为您自己的 javax.servlet.http.HttpServletRequest 实现。虽然 HttpServletRequest 是一个相当大的接口(interface),并且依赖于更大的类,但 Play Request 中包含的信息 应该 足以构造一个 HttpServletRequest。根据您的用途,您可能会保留一些或大部分方法未实现以减少工作量。查看this class举个例子。

  2. 如果您从 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 and its servlet support .

关于java - 玩2.2.2(Scala),如何处理HttpServletRequests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com