今天帮朋友解决了一个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导致,但具体细节还不清楚。
所幸第一个方法没问题,表单中文处理正常。
分享到:
相关推荐
解决页面乱码问题的关键在于确保整个应用链路中的字符编码一致。通过正确配置项目、服务器、模板、sitemesh和HTTP响应头,我们可以有效地避免乱码问题,实现流畅的页面装饰效果。对于`VelocityView.java`的具体功能...
这可以避免因字符编码不一致导致的乱码问题。 2. **整合SiteMesh**: SiteMesh是一个页面布局框架,它可以帮助我们统一管理Web应用的页面布局。`struts-cleanup`和`sitemesh`过滤器是整合SiteMesh所必需的,它们...
示例中的`struts.xml`包含了一个过滤器配置,用于设置字符编码,这有助于处理中文字符。 此外,还有一些额外的依赖库,如`commons-codec.jar`、`commons-fileupload-1.2.jar`和`commons-io-1.4.jar`,它们分别提供...
当工程启动时,若遇到数据库连接错误,首先要检查 Eclipse 版本和编码设置是否一致。如果问题依旧,可能是因为 CVS 中的某些文件,如 `tld` 文件夹,没有完全下载。确保所有必要的文件都已同步到本地项目中。 2. *...
字符编码 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。 sitemesh.jar Sitemesh 是一个基于WEB页面的布局、装饰以及应用整合的开源框架。它能帮助我们在...
- 在`doFilter`方法中,它获取`HttpServletRequest`和`HttpServletResponse`对象,然后使用`DispatcherUtils`实例来预处理请求和响应,设置locale、字符编码以及特殊请求参数。 - 接着,请求被包装成`...
这些过滤器通常用于执行一些预处理任务,比如设置字符编码、清理上下文环境等。Struts2框架中过滤器的执行顺序通常是固定的,例如:ActionContextCleanup、其他自定义过滤器(如SiteMesh)以及FilterDispatcher。 3...
- **配置过滤器**:在`web.xml`中配置Struts2的过滤器以及其他必要的过滤器,例如字符编码过滤器。 ```xml <filter-name>SetCharacterEncoding <filter-class>...
web开发常用jar包 常用jar包 commons-beanutils.jar Apache Commons包中的一个,...字符编码 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。 sitemesh.jar