关于 sitemesh 在weblogic spring下的乱码问题解决
web.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " http://java.sun.com/dtd/web-app_2_3.dtd " >
< web-app >
< filter >
< filter-name > sitemesh </ filter-name >
< filter-class > com.opensymphony.module.sitemesh.filter.PageFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > sitemesh </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter >
< filter-name > encodingFilter </ filter-name >
< filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
< init-param >
< param-name > forceEncoding </ param-name >
< param-value > true </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > encodingFilter </ filter-name >
< url-pattern > *.jsp </ url-pattern >
</ filter-mapping >
</ web-app >
sitemesh.xml:
<! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " http://java.sun.com/dtd/web-app_2_3.dtd " >
< web-app >
< filter >
< filter-name > sitemesh </ filter-name >
< filter-class > com.opensymphony.module.sitemesh.filter.PageFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > sitemesh </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter >
< filter-name > encodingFilter </ filter-name >
< filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
< init-param >
< param-name > forceEncoding </ param-name >
< param-value > true </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > encodingFilter </ filter-name >
< url-pattern > *.jsp </ url-pattern >
</ filter-mapping >
</ web-app >
<?
xml version="1.0" encoding="utf-8"
?>
< sitemesh >
< property name ="decorators-file" value ="/WEB-INF/decorators.xml" />
< excludes file ="${decorators-file}" />
< page-parsers >
< parser default ="true" class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
< parser content-type ="text/html" class =" com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
< parser content-type ="text/html;charset=UTF-8" class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</ page-parsers >
< decorator-mappers >
< mapper class ="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper" >
< param name ="config" value ="${decorators-file}" />
</ mapper >
</ decorator-mappers >
</ sitemesh >
decorators.xml:
< sitemesh >
< property name ="decorators-file" value ="/WEB-INF/decorators.xml" />
< excludes file ="${decorators-file}" />
< page-parsers >
< parser default ="true" class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
< parser content-type ="text/html" class =" com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
< parser content-type ="text/html;charset=UTF-8" class ="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</ page-parsers >
< decorator-mappers >
< mapper class ="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper" >
< param name ="config" value ="${decorators-file}" />
</ mapper >
</ decorator-mappers >
</ sitemesh >
<?
xml version="1.0" encoding="utf-8"
?>
< decorators defaultdir ="/decorators" >
< decorator name ="main" page ="test.jsp" >
< pattern > /* </ pattern >
</ decorator >
< decorator name ="panel" page ="panel.jsp" />
< decorator name ="printable" page ="printable.jsp" />
</ decorators >
decorator的页面test.jsp:
< decorators defaultdir ="/decorators" >
< decorator name ="main" page ="test.jsp" >
< pattern > /* </ pattern >
</ decorator >
< decorator name ="panel" page ="panel.jsp" />
< decorator name ="printable" page ="printable.jsp" />
</ decorators >
<%
@ page contentType
=
"
text/html; charset=utf-8
"
%>
<% @ taglib uri = " http://www.opensymphony.com/sitemesh/decorator " prefix = " decorator " %>
<% @ taglib uri = " http://www.opensymphony.com/sitemesh/page " prefix = " page " %>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml " >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" />
< title >< decorator:title default ="Mysterious page" /></ title >
< decorator:head />
</ head >
< body >
< table width ="100%" height ="100%" border ="0" >
< tr >
< td width ="29%" ></ td >
< td width ="71%" > 哈哈 哈哈
</ td >
</ tr >
< tr >
< td >< decorator:body /></ td >
< td > </ td >
</ tr >
</ table >
</ body >
</ html >
被装饰器页面1.jsp:
<% @ taglib uri = " http://www.opensymphony.com/sitemesh/decorator " prefix = " decorator " %>
<% @ taglib uri = " http://www.opensymphony.com/sitemesh/page " prefix = " page " %>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml " >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" />
< title >< decorator:title default ="Mysterious page" /></ title >
< decorator:head />
</ head >
< body >
< table width ="100%" height ="100%" border ="0" >
< tr >
< td width ="29%" ></ td >
< td width ="71%" > 哈哈 哈哈
</ td >
</ tr >
< tr >
< td >< decorator:body /></ td >
< td > </ td >
</ tr >
</ table >
</ body >
</ html >
<%
@ page contentType
=
"
text/html;charset=utf-8
"
%>
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html;charset=utf-8" >
< title > 哈哈 </ title >
</ head >
< body >
< h2 > 哈哈 </ h2 >
</ body >
</ html >
作业环境:
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html;charset=utf-8" >
< title > 哈哈 </ title >
</ head >
< body >
< h2 > 哈哈 </ h2 >
</ body >
</ html >
weblogic sp 5
spring 1.2.6
sitemesh 2.2.1
发现有中文乱码问题。
在google上查找很久都没有方法解决,后怀疑是处理编码的 org.springframework.web.filter.CharacterEncodingFilter中的代码中只对request做了编码处理而没有对response做编码处理
自己对其做了一点小的修改红色字部分
解决乱码问题
发现有中文乱码问题。
在google上查找很久都没有方法解决,后怀疑是处理编码的 org.springframework.web.filter.CharacterEncodingFilter中的代码中只对request做了编码处理而没有对response做编码处理
自己对其做了一点小的修改红色字部分
protected
void
doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
super .doFilter(request,response,filterChain);
if ( this .forceEncoding || request.getCharacterEncoding() == null ) {
request.setCharacterEncoding( this .encoding);
response.setContentType( " text/html; charset= " + this .encoding);
}
filterChain.doFilter(request, response);
}
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
super .doFilter(request,response,filterChain);
if ( this .forceEncoding || request.getCharacterEncoding() == null ) {
request.setCharacterEncoding( this .encoding);
response.setContentType( " text/html; charset= " + this .encoding);
}
filterChain.doFilter(request, response);
}