Myeclipse中默认的编码是“ISO—8859-1”,由于中文的特殊性(可用GBK、UTF-8,推荐使用UTF-8,国际通用),在开发中比可避免编码转化问题,今天我们用过滤器技术解决jsp等编码问题。原理就不再说了,实例说明一下。
工具/原料
Myeclipse6.5
方法/步骤
1、打开web项目,在src中新建一个类,规搏壶盥茜范一下编程习惯我们就把它放到一个包中去,项目右键新建“class”,包名填写例如“com.test.struts.filters惯墀眚篪”(习惯是域名反转),文件名首字母大写,例如“SetCharacterEncoding”。下面是类中的代码,实际上就是实现了Filter接口,重写了一下doFilter函数。packagecom.test.hibernate.filters;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassSetCharacterEncodingimplementsFilter{ /*(non-Javadoc) *@seecom.sun.net.httpserver.Filter#doFilter(com.sun.net.httpserver.HttpExchange,com.sun.net.httpserver.Filter.Chain) */ publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse, FilterChainchain)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)srequest; HttpServletResponseresponse=(HttpServletResponse)sresponse; //注意这里请求和响应都强制转化了一下 request.setCharacterEncoding("UTF-8"); //设置请求编码“UTF-8”比较通用 response.setCharacterEncoding("UTF-8"); //设置相应编码 chain.doFilter(srequest,sresponse);//转发请求 } publicvoiddestroy(){ //TODOAuto-generatedmethodstub } publicvoidinit(FilterConfigarg0)throwsServletException{ //TODOAuto-generatedmethodstub }}
2、web配置文件配置filter文件,打开web.xml文件,在<web-app></web-app>之间加入如下配置,<filter></filter>是设置类路径的,<filter-mapping></filter-mapping>是用来映射指定路径文件到filter的。<filter> <filter-name>setEncoding</filter-name> <filter-class>com.test.struts.filters.SetCharacterEncodingFilter</filter-class><!--这里还可以使用初始变量<init-param> <param-name>name</param-name> <param-value>value</param-value> </init-param>再在SetCharacterEncoding.java的定义一个privateStringencoding=null;在init函数中加一句this.encoding=filterConfig.getInitParameter("encoding");--></filter><filter-mapping> <filter-name>setEncoding</filter-name><!--这个名称和上面的要相同--> <url-pattern>/*</url-pattern><!--所有文件--></filter-mapping>
3、配置完后运行一下项目就不再看到那烦人的乱码了!