sitemesh的字符编码问题

今天帮朋友解决了一个sitemesh很奇怪的字符编码问题。

开发环境是NetBeans 4.1 + Tomcat。之前在此环境下开发的Web项目很正常,最近朋友决定使用sitemesh来管理页面,结果问题出来了:CSS、HTML、JSP等文件均没问题,但就是不能显示图像。并且每刷新一下页面,Tomcat就会报错:

严重: Javac exception
Compile failed; see the compiler error output for details.
...
at com.mike.Filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:51)
...
...vcss_bmp.java:45: 非法的表达式开始
...vcss_bmp.java:45: 非法字符: /15
...

看来问题出在字符编码上,检查页面编码,全设为gb2312,应该没问题,再检查web.xml,共有两处设置编码的地方。
第一个:
  <filter>
    <filter-name>setCharacterEncoding</filter-name>
    <filter-class>com.mike.Filter.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>gb2312</param-value>
    </init-param>
  </filter>
...
  <filter-mapping>
    <filter-name>setCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

另外一个地方是:
    <jsp-property-group>
      <display-name>JSP Property Group</display-name>
      <url-pattern>/*</url-pattern>
      <page-encoding>gb2312</page-encoding>
    </jsp-property-group>
  </jsp-config>

根据错误提示,先把第一个地方屏蔽掉,错误依旧。恢复第一个后,把第二个地方屏蔽掉,问题解决。想必是sitemesh里面所应用的chains of responsibility导致,但具体细节还不清楚。

所幸第一个方法没问题,表单中文处理正常。

你可能感兴趣的:(tomcat,exception,filter,Netbeans,compiler,output)