Miles' Blog

Welcome 2 My Planet

Available categories: [/] [development. ~]

issues, 040520 [Permalink]

Thu May 27 14:32:44 CST 2004

  1. ContentType。我需要让所有的/wml下面的servlet和jsp的contentType是text/vnd.wap.wml,可是,如果一个一个设置,多麻烦阿。所以呢,考虑到用一个filter,过滤所有/wml开头的请求,设置response的contentType。建立一个Filter,在他的doFilter里面response.setContentType("text/vnd.wap.wml"),可是呢,却对jsp不管用!
    A: 检查work目录,观察jsp生成的java源码,发现在刚刚进入_jspService的时候,会自动加上:
    response.setContentType("text/html;charset=ISO-8859-1");。所以filter在他之前设置的contentType就白瞎了。。既然不能更改设置contentType的顺序,那就让它失效!
    所以在这里引入了一个WmlMimeServletResponseWrapper。他的作用主要在这几段:
        private static final String CONTENT_TYPE = "text/vnd.wap.wml";
    
        public WmlMimeServletResponseWrapper(HttpServletResponse response) {
            super(response);
            response.setContentType(CONTENT_TYPE);
        }
    
        public void setContentType(String type) {
            super.setContentType(CONTENT_TYPE);
        }
    
    很简单,就不说了。不管传入什么type,我统统不理会,一律vnd.wap.wml。不过,这里有一个小问题。最初,我是把setContentType方法留空了。看上去也很合理,而且在tomcat4.0.6下面运行很正常。可是,到了tomcat4.1.27/5就不正常了。百思不得其解,把它改成了现在的样子,问题得以解决。究竟为什么呢?有空看看tomcat的源码吧。跟踪看看究竟发生了什么。
  2. 构造一个XSLT的transformer,是需要时间的。他的输入参数,是一个xsl文件资源。
    A: 因为一般情况下,xsl文件不会频繁更新,所以这里可以考虑做成factory,维护一个static的transformer集合。

Posted by: miles

Comments on this entry





Author (*):
Verify Code (*):8 9 7 9
E-mail:
URL:
Comment (*):
Remember me?

Available categories: [/] [development. ~]

Powered By blojsom   RSS Feed  RSS2 Feed  RDF Feed