Servlet中如何获取response的statusCode
HttpURLConnection.getResponseCode()可以获取,但需要new一个URL对象并重新发送请求,有性能损失。有没其他的获取statusCode的方法。
我在Oracle官网论坛上看见别人的讨论:可以通过apache的工具类org.apache.catalina.valves.RequestDumperValve来获取,但自己未找到其源码。另外也有人说对Reponse对象封装来跟踪statuCode,说的比较模糊,实现不便。
各位大牛们有什么好的办法?若实在要用HttpURLConnection.getResponseCode()那有没办法避免请求被过滤器拦截(我想是不可能地)。先说声谢谢!
情况是这样的,一个Servlet主入口负责处理分发过来的HttpServletRequest请求和HttpServletRsponse响应(在配置文件中定义好的),在HttpServletResponse.setStatusCode()和设置响应报文后,在跳出该方法。我想获取该方法执行完后再来获取Response的statusCode,这时Response只是一个HttpServeltResponse接口。
------解决方案--------------------终于取出来了,不过是在request里面,不是response。
:${requestScope['javax.servlet.error.status_code']}
个人觉得应该是从response里面取出,因为response可以更改状态码,request取出的是response更改以前的。所以,如果404状态码,response用setStatus修改成了200,request取出的还是404。不过这样也方便了jsp进行处理。
不过response,好像没提供取出的方法。request其实也没有,只是发现request是个类似map类型的,有key和value对,这样就很容易取出任何一个值了。
两年前的帖子了,估计你可能也解决了。就留给后人看吧。