应用了sitemesh装饰模板后,所有html页面,只有有中文都会出现乱码问题,导致页面加载超级慢,或直接就报错了。
郁闷了很久,开始不知道是sitemesh搞的鬼,测试了n多都不知道是什么原因,后来搜索html乱码才知道是sitemesh引起的。
于是搜索相关资料,综合了几个设置终于解决了,分享下解决方法。
有几个地方要改的:
1.排除不装饰的html文件目录
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
<excludes>
<pattern>/index.jsp</pattern>
<pattern>/coos/*.*</pattern>
<pattern>/scripts/*.*</pattern>
</excludes>
2.在web.xml里面加入一个filter
(1)到你apache-tomcat-6.0.14\webapps\examples\WEB-INF\classes\filters下找到SetCharacterEncodingFilter.java这个文件。
(2)把SetCharacterEncodingFilter.java放到你的工程代码中。
(3)设置web.xml
<filter>
<filter-name>Set Character Encoding </filter-name>
<filter-class>你的包.SetCharacterEncodingFilter </filter-class>
<init-param>
<param-name>encoding </param-name>
<param-value>UTF-8 </param-value>
</init-param>
<init-param>
<param-name>ignore </param-name>
<param-value>true </param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding </filter-name>
<servlet-name>action </servlet-name>
</filter-mapping>
3.在struts.properties 添加:
struts.locale=zh_CN
struts.i18n.encoding=UTF-8
4.在web.xml中EncodingFilter的位置应该在Struts2的FilterDispatcher之前,因为要先调整字符集,然后进入Action。按照Struts2的API,filter的顺序是
struts-cleanup filter
SiteMesh filter
FilterDispatcher
总之,所有涉及到编码的地方都改成UTF-8吧
jsp的可以根据<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>来识别编码,HTML的却不行,而且没有好的解决方案。
附网上不完美的解决方案:
静态html在sitemesh中乱码的解决方法。
前提条件:sitemesh的decorator的编码全部用UTF-8,使用SetCharacterEncodingFilter把request的encoding也
设置成UTF-8
问题1、decorator中的内容出现乱码。
原因:
解决方法:改进SetCharacterEncodingFilter,使它对response也设置encoding为UTF-8
问题2、被修饰的html内容出现乱码。
原因:sitemesh根据html的contenttype(例如:text/html;charset=utf-8)来决定html文件的encoding,
如果contenttype是像(text/html)这样的形式,sitemesh就无法知道html的encoding,这时sitemesh就
使用DEFAULT_ENCODING即System.getProperty("file.encoding"),在jetty中正是后面那样,估计tomcat也是这样。
解决方法:使html的encoding和System.getProperty("file.encoding")相同。
1、启动jetty时将java系统变量file.encoding设置为UTF-8,html的编码也用UTF-8.(推荐)
注:即使是编码都是UTF-8,只要没排除装饰还是不行。
分享到:
相关推荐
本案例涉及的是将sitemesh2与velocity框架进行集成,以实现页面装饰功能。sitemesh是一款开源的Web页面布局和装饰框架,而velocity则是一个轻量级的Java模板引擎,用于生成动态网页内容。下面我们将深入探讨这个集成...
**Sitemesh装饰器入门** Sitemesh 是一个开源的 Web 应用程序框架,它主要用来帮助开发者实现页面布局和装饰功能。Sitemesh 的核心概念是“装饰器”,这个概念源自于软件设计模式中的装饰者模式。通过使用 Sitemesh...
5. **运行与测试**:在MyEclipse中部署Openfire项目,启动服务器后,访问任意页面,如果页面被正确装饰,说明Sitemesh已经成功集成。 在提供的`demo`文件中,可能包含了具体的装饰模板、Openfire的配置示例以及部署...
**Sitemesh** 是一个广泛使用的开源Web应用框架,它主要功能是提供页面布局和装饰功能,用于统一网站的外观和感觉。Sitemesh通过在Web应用中引入“母版”(Master Page)的概念,使得开发者可以轻松地创建一致性的...
SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求,将页面内容与布局模板相结合,从而提供了一种简单有效的方式来管理和控制Web应用的外观和感觉。在Web开发中...
SiteMesh 是一个开源的Web应用程序布局和装饰框架,主要用于解决Web应用中的页面布局问题。它通过拦截HTTP请求,将页面内容与预定义的布局模板相结合,实现统一的页面头部、底部和侧边栏等元素,从而提高网站的整体...
Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...
2. **使用SiteMesh**:集成SiteMesh后,再次进行性能测试。 3. **负载测试**:模拟不同并发用户数量,观察系统的响应时间。 **实验结果** - 在低并发情况下,使用SiteMesh对性能影响不大。 - 随着并发用户数的增加...
Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并简化页面的复杂性。Sitemesh通过将页面分为内容区域和装饰模板来实现这一目标,使得开发者可以...
sitemesh 装饰页面技术.
- Decorator Filter:这是SiteMesh的核心组件,负责拦截请求、传递页面内容给装饰器,并将组合后的页面返回给客户端。 - Decorators:这是预先定义好的JSP页面,包含了整个网站统一的页面布局和设计。 - decorators....
Sitemesh 是一个开源的 Web 应用程序装饰框架,主要用于解决网页布局和页面统一风格的问题。它通过拦截 HTTP 请求,将请求的页面内容与预先定义好的模板结合,使得开发者可以轻松地创建出统一的网站外观和感觉。在...
Sitemesh的核心概念是“装饰者”模式,即通过一个基础模板来统一页面的头部、尾部等公共部分的设计,而各个具体的页面只需要关注自己的核心内容即可。 #### 二、Sitemesh 3 下载与安装 **最新版本**: 目前Sitemesh...
【sitemesh3-demo】是一个基于Sitemesh3框架的示例项目,旨在展示如何在Web应用程序中有效地实现页面布局和装饰功能。Sitemesh是一个开源的Java Web应用框架,主要用于增强网页的外观和结构,通过定义装饰模板,可以...
Sitemesh 是一款开源的网页布局和装饰框架,主要用于Java Web应用,它可以帮助开发者实现页面的统一布局,提高网站的视觉一致性。Sitemesh的工作原理是通过拦截HTTP请求,将请求的内容与预先定义好的模板结合,生成...
- **装饰模式的应用**:Sitemesh采用了GOF的装饰者模式,并将其应用于过滤器中,这意味着被装饰的页面无需知道具体的装饰逻辑,大大增强了灵活性。 - **多源内容装饰**:Sitemesh可以装饰来自不同技术栈的内容,如...
这个jar包包含了所有SiteMesh的类和方法,使得开发者能够将SiteMesh集成到他们的Web应用程序中。 描述中提到的“jsp采用sitemesh页面布局”是指使用SiteMesh来管理JSP页面的布局。JSP(JavaServer Pages)是一种...
- 装饰器是Sitemesh的核心概念,它是一个HTML文件,定义了页面的基本结构,如头部、主体和尾部。你可以为不同类型的页面定义多个装饰器,根据URL或特定条件选择使用哪个装饰器。 - 装饰器通过`...
**Sitemesh** 是一个开源的网页布局和装饰框架,主要用在Java Web应用程序中,用于提供页面布局和模板设计的解决方案。它可以帮助开发者统一网站的外观和感觉,通过分离内容、样式和布局,使代码更加模块化和可维护...