J2EE api 显示 HttpServletResponse 有一个“getStatus()”调用。 J2EE jar 文件没有它
Posted
技术标签:
【中文标题】J2EE api 显示 HttpServletResponse 有一个“getStatus()”调用。 J2EE jar 文件没有它【英文标题】:J2EE api shows that HttpServletResponse has a 'getStatus()' call. J2EE jar file does not have it 【发布时间】:2014-11-17 20:49:20 【问题描述】:标题说明了一切。我需要 HttpServletResponse 实例上的 getStatus() 函数。 API 说它存在。 Netbeans 将该请求显示为错误,说“找不到符号”。当我反汇编 javaee.jar 文件时,HttpServletResponse 类没有显示 getStatus() 函数,也没有显示我需要的任何其他 get()。
我想我有错误的 .jar 文件,虽然我知道它来自 J2EE 6。如果是这种情况,我在哪里可以得到正确的 jar 文件(以及哪个)而不下载整个 J2EE 发行版?
我还找到了 javaee-api-6.0.jar 文件。与 j2ee.jar 文件不同,它确实具有我需要定义的功能。而且,就像 j2ee.jar 一样,它的所有函数都是抽象的……答案就在我身上……因为这些函数是抽象的,它们不能运行,它们只是为了编译而存在,对吧?我正在编写代码以在 Tomcat 中运行,因此无法仅在我的 IDE 中正确测试它,是吗?它需要坐在 Tomcat 中并在 Tomcat 中运行。所以Tomcat中必须有可以运行它的jar文件。嗯。
是吗?
谢谢。
【问题讨论】:
您需要将 Tomcat 服务器添加到您的 Netbeans。这将允许 Netbeans 访问 tomcat 包含的 Web 服务器库。 可以升级到Tomcat7吗?从 Servlet 3.0 开始,就有了 HttpServletResponse#getStatus()。否则调用被隐藏,你需要一个包装器来访问它(使用过滤器) @Victor - 我正在使用 Tomcat7 ( 7.0.50 )。恐怕我不熟悉“需要包装器”和“使用过滤器”。好的,我在下面看你的答案... @abalos - 我已经按照你的建议去做了。虽然它不能解决我眼前的问题,但我相信确实需要这样做。谢谢。 【参考方案1】:查看类似问题的答案: https://***.com/a/1302165/3046834
最佳做法是始终使用 API jar 而不是服务器特定的 jar 进行编码。使用上面答案中公开的过滤器和包装器,您将能够访问状态代码。
【讨论】:
我正在使用 TC 7。我查看了该页面,看到了一个有趣的评论... >>> 所以,如果还有升级空间,请升级到 Servlet 3.0(Tomcat 7、Glassfish 3、JBoss AS 6 等)并且您不需要包装器。链.doFilter(请求,响应); int status = ((HttpServletResponse) response).getStatus(); 所以,这是您引用的页面中的这个我正在使用 Tomcat7 ...我不太确定我从哪里获得这些引用或确切地放置此代码...你能详细说明?链.doFilter(请求,响应); int status = ((HttpServletResponse) response).getStatus();谢谢 好的。这些示例都引用了过滤器执行。也就是说,您必须定义一个“捕获” Servlet 请求执行的过滤器。获得响应后,在过滤器执行中,您可以检查 HTTPServletResponse 的内容。为了定义一个过滤器,你有几个方法,无论是注解还是在 web.xml 为了定义一个过滤器,您必须在 web.xml 中实现一个实现过滤器接口和几个标签的类。请参阅此link 了解更多信息。在 filter.doFilter() 内部从 HttpServletResponse 捕获状态。以上是关于J2EE api 显示 HttpServletResponse 有一个“getStatus()”调用。 J2EE jar 文件没有它的主要内容,如果未能解决你的问题,请参考以下文章