乱码的问题一直是困扰开发者的大问题,在SSH框架中其实可以通过一个过滤器来解决乱码的问题,在项目的web.xml中添加过滤器如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Spring加载 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:conf/spring/applicationContext*.xml
</param-value>
</context-param>
<filter>
<filter-name>Open</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Open</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Spring Security Filter部分 -->
<filter>
<filter-name>_filterChainProxy</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>_filterChainProxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Character Encoding filter -->
<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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>GZIPFilter</filter-name>
<filter-class>com.tacitknowledge.filters.gzipfilter.GZIPFilter</filter-class>
</filter>
<!-- GZIPFilter 设置自己想要压缩的文件类型-->
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<!-- CacheFilter缓存定义 设置此项时tk-filters.properties的[color=blue]CacheFilter.Enabled=true[/color]才可用 -->
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>com.tacitknowledge.filters.cache.CacheHeaderFilter</filter-class>
</filter>
<!-- CacheFilter 设置自己想要缓存的文件类型-->
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>
struts-default.xml,struts-plugin.xml,
conf/struts/struts.xml
</param-value>
</init-param>
</filter>
<filter>
<filter-name>struts2-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring2.5监听 -->
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<listener>
<listener-class>com.geoglobeportal.listener.ApplicationInitListener</listener-class>
</listener>
<servlet>
<servlet-name>proxyHandler</servlet-name>
<servlet-class>com.geoglobeportal.shareservice.service.ProxyHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proxyHandler</servlet-name>
<url-pattern>/proxyHandler</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>synchronizeSysContextServlet</servlet-name>
<servlet-class>
com.geoglobeportal.system.servlet.SynchronizeSysContextServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>synchronizeSysContextServlet</servlet-name>
<url-pattern>/synchronizeSysContextHandler</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FileUploadServlet</servlet-name>
<servlet-class>com.geoglobeportal.datashare.service.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileUploadServlet</servlet-name>
<url-pattern>/FileUploadServlet.htm</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FileDownServlet</servlet-name>
<servlet-class>com.geoglobeportal.datashare.service.FileDownServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDownServlet</servlet-name>
<url-pattern>/FileDownServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Connector</servlet-name>
<url-pattern>
/fckeditor/editor/filemanager/connectors/*
</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>chart</servlet-name>
<servlet-class>
com.geoglobeportal.admin.log4j.jfree.eastwood.ChartServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>RandCode</servlet-name>
<servlet-class>com.geoglobeportal.admin.authority.web.RandCode</servlet-class>
</servlet>
<servlet>
<servlet-name>proxy</servlet-name>
<servlet-class>com.geoglobeportal.admin.news.util.proxy</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>chart</servlet-name>
<url-pattern>/log4j/chart</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>RandCode</servlet-name>
<url-pattern>/RandCode</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxy</servlet-name>
<url-pattern>/servlet/proxy</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>xml</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<jsp-config>
<taglib>
<taglib-uri>/FCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://www.changtusoft.cn/test/functions</taglib-uri>
<taglib-location>/WEB-INF/myfunctions.tld</taglib-location>
</taglib>
</jsp-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/commons/notfound.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/commons/error.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/commons/accessDeny.jsp</location>
</error-page>
</web-app>
特别要注意的是字符过滤器一定要添加到struts框架过滤器的前面,这样这个过滤器才能对struts标签中的数据起作用