关于wml中的response status code [Permalink]
Thu Nov 25 00:07:59 CST 2004
没错,就是那个200/404/500。对于一般的浏览器,如果返回的status code不是200(HttpServletResponse.SC_OK
),完全没有影响,会显示服务器定制的错误页面。比如:
http://2yup.com/blah
这就是我们通常所见的定制http error page了。
可是对于大多wml浏览器来说,可能是为了节省流量,只要分析到status code,就不会在去找页面,而是使用浏览器的默认错误页。这样适用于大多情况,可是,在我的应用中,我是利用500错误(Internal Server Error)来做统一的错误显示页面的。通过这种方法,只需要简单的抛出Exception,就能够方便的显示错误信息。这样就比较麻烦了--我的所有错误信息页面通通完蛋。
还好我们有filter可以用。对于wml应用,我都需要返回我的定制错误,所以,之前加入的WmlMimeFilter
刚好满足条件。只需要在WmlMimeServletResponseWrapper
里面,重载setStatus方法,就万无一失了:
public void setStatus(int code) { super.setStatus(HttpServletResponse.SC_OK); }结果正如所愿,丢失的错误信息全部回来了
处理前 ============== HTTP/1.x 500 Internal Server Error Content-Type: text/vnd.wap.wml Content-Length: 695 Date: Wed, 24 Nov 2004 16:14:13 GMT Server: Apache-Coyote/1.1 Connection: close 处理后 ============== HTTP/1.x 200 OK Content-Type: text/vnd.wap.wml Content-Length: 695 Date: Wed, 24 Nov 2004 16:19:02 GMT Server: Apache-Coyote/1.1
Posted by: miles
Comments on this entry