|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。办理|成绩|中文|中文乱码
克日,利用struts1.1,发明厌恶的中文乱码成绩,在form的传送历程和进库时分呈现。
就我在收集上找的办法排列以下:
(Tomcat5.0.28+struts1.1+hibernate2.1+sqlserver2k)
1.间接转编码publicstaticStringisoToGB(Stringsrc){StringstrRet=null;try{strRet=newString(src.getBytes("ISO_8859_1"),"GB2312");}catch(Exceptione){}returnstrRet;}经由过程一个函数转编码,我没有乐成,不知为什么!
2.过滤filter设置法
packageyourbean;
importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjava.util.*;
publicclassservfilterextendsHttpServletimplementsFilter{privateFilterConfigfilterConfig;//Handlethepassed-inFilterConfigpublicvoidinit(FilterConfigfilterConfig){this.filterConfig=filterConfig;}//Processtherequest/responsepairpublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainfilterChain){try{request.setCharacterEncoding("GB2312");((HttpServletResponse)response).setHeader("Cache-control","no-cache");response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setHeader("Expires","0");((HttpServletResponse)response).setHeader("Pragram","no-cache");filterChain.doFilter(request,response);}catch(ServletExceptionsx){filterConfig.getServletContext().log(sx.getMessage());}catch(IOExceptioniox){filterConfig.getServletContext().log(iox.getMessage());}}//Cleanupresourcespublicvoiddestroy(){}}上面是一个web.xml文件你用jbuilder写下面的bean的时分会天生一个<?xmlversion="1.0"encoding="ISO-8859-1"?>
<!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app><display-name>WelcometoTomcat</display-name><description>WelcometoTomcat</description><filter><filter-name>servfilter</filter-name><filter-class>yourbean.servfilter</filter-class></filter><filter-mapping><filter-name>servfilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>把下面的servfilter编译放在你的web-inf/classes/yourbean/下web.xml放在web-inf/下和classes在一个目次下在每一个jsp页面上加上<%@pagecontentType="text/html;charset=GBK"%>
也不是很便利,并且在tomcat也没有乐成,持续忧郁!
3.我如今利用办法,保举!!
写一个myActionServlet来并掩盖ActionServlet中的process()办法。
protectedvoidprocess(HttpServletRequestrequest,HttpServletResponseresponse)throwsjava.io.IOException,javax.servlet.ServletException{/**@todoOverridethisorg.apache.struts.action.ActionServletmethod*/request.setCharacterEncoding("GB2312");//就加着一行统统都办理了super.process(request,response);}
固然别忘了改一下web.xml内里的设置<servlet><servlet-name>action</servlet-name><servlet-class>strutsdemo.myActionServlet</servlet-class><init-param><param-name>debug</param-name><param-value>2</param-value></init-param><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><load-on-startup>2</load-on-startup></servlet>
改一下servlet-class标签中的内容就能够!
真的能够,一劳用yi!
详细编码的实际就不说了,google上已够多了。
别的,假如不必struts的话,hibernate也大概碰着中文乱码成绩,只需在hibernate.cfg.xml设置中以下:
<propertyname="hibernate.connection.url">jdbc:microsoft:sqlserver://Localhost:1433;SelectMethod=cursor;characterEncoding=GBK;DatabaseName=myDatabase.</property>
characterEncoding=GBK!就能够了。
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解 |
|