(一)JSP的中文乱码问题
其根源在于:Web容器(Tomcat)默认的字符处理编码是iso-8859-1,对于需要在浏览器页面上显示中文的JSP程序,
但在程序中并没有指定中文的字符集,那么中文将在浏览器页面上显示为乱码。当然,前面所说的是指在Tomcat服务器下的,其他服务
器有些不是这样的,比如BEA Weblogic和IBM Websphere是从操作系统中取得默认的编码,然后按该编码来转码所有用户请求.Struts中
文问题有三种:发送请求时的中文问题、处理响应结果的中文问题和国际化资源文件的中文问题。
1. 发送请求时的中文问题
客户机向服务器发送请求时,根据所使用浏览器的不同可能会有不同的编码形式。不过通常情况下在请求到达Web容器前要将之转码,
转成某种固定的编码以方便Web应用的处理。这种问题有三种处理方法:
第一种(针对Tomcat 5 对POST请求有效,GET请求无效,因为Tomcat 5 对POST和GET请求时分别处理的)可以采用设置用户请求对象的编码形式,也就是以HttpServletRequest对象的编码的形式来进行用户请求的转码:
//将用户请求转码为GB2312、GB18030、GBK、UTF-8 等型,具体转为什么类型的编码以您的jsp文件的编码方式为准,java、jsp 、js 、css应保持一致的编码方式。这里以GBK为例。
request.setCharacterEncoding("GBK");
第二种(对GET请求有效),可以在Servlet中对用户输入的数据进行转码。Web容器接受到一个请求时,它会将它发往某个处理的Servlet。在Servlet中直接获取用户请求的数据,然后将之转码为需要的格式,例如把数据转换为GBK格式:
String username = request.getParameter("username");
username = new String(username.getBytes("iso-8859-1”), "GBK");
以上两种方法都是很常用的,但第一种是每个页面都要去修改,当JSP页面很多时比较麻烦,第二种就每个发送的数据都要转码,也很麻烦。
第三种,就是采用Filter过滤器方式,将用户的所有请求都通过过滤器进行转码,这种方法就克服了以上两种方法的缺点。代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain ) throws IOException, ServletException {
request.setCharacterEncoding("GBK");
//response.setContentType("text/html;charset=GBK");
chain.doFilter(request, response);
}
这里转码为GBK过滤器的主要代码,当然还要把这个类要在web.xml文件中部署。
分享到:
相关推荐
java项目,自己做的项目利用jmx监控weblogic,tomcat,websphere源码
详细描述了WebLogic、WebSphere、JBOSS、Tomcat之间的区别
在创建数据源后,在java中使用数据源时tomca和was的引用方法是不同的
经常发现在开发时在tomcat部署、run都没问题,实施发布到was上的websphere上就冲突报错了。这里总结下两个web容器部署的差异!!
将web应用从Tomcat5移植到Websphere6.doc将web应用从Tomcat5移植到Websphere6.doc
该文档是本人从网络上找到的,感觉写的不错,就上传了,和大家分享一下
图文并茂,详细描述pinpoint安装部署、监控tomcat、weblogic、webSphere 实际操作,自己编写
tomcat、apache、websphere配置
weblogicTomcatWebsphere调优方法
将web应用从Tomcat5移植到Websphere6.pdf
Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。 打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),...
本人开发环境: jdk1.5.0_11 , eclipse3.2 , MyEclipse 5.5.1 ,Tomcat5.5(开发用) ,websphere 6.1(发布用) 操作系统是 windows XP
在websphere8.5 下部署含有CXFwebservice的war包无法正常启动,而相应的war包在tomcat上是可以正常启动的,通过后台的日志分析大致可以定位为相关的cxf类无法找到,其实这些类在项目的lib目录下都是存在的,莫名其妙...
apache-tomcat-7.0.42,稳定版本,可直接使用 Apache是web服务器,Tomcat是应用(java)服务器,它只是一个...Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。
在websphere通过getClassLoader().getResource("").getPath()取配置文件的路径跟在tomcat环境下是不一样的,如果配置文件是放在classes目录下,会报找不到配置文件。 发布应用时,报web.xml文件有错 发布应用成功,...
Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等 Tomcat的下载 本文档教学下载tomcat7及其使用
在websphere下,log4j打印的内容会被was接管,导致在tomcat下可以正常使用的log4j配置方法,在websphere下不打印任何日志到目标路径,本方法可以解决此问题并且是几乎所有开源jar包在websphere上碰上冲突时的标准...
spring4.3.x、CXF3.2.x框架部署到Websphere9,在TOMCAT8.5跑没问题,到WAS9上各种冲突,框架用的jar和工具都很新,网上资料很少, 最后干脆自己不停尝试,用了2天时间终于把冲突的jar包理顺了。方法就是各种排列组合...