`
yufei
  • 浏览: 94036 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java 跨服务器(tomcat和weblogic)的中文编码解决方法

    博客分类:
  • Java
阅读更多
本文要解决的问题是使用同一种编码方案而能在不同服务器下都解决中文乱码问题,我只在tomcat和weblogic下试验过,因为这是最常用的两种服务器(就是一套方案要在tomcat和weblogic下无论是get请求还是post请求都要正常编码---ajax请求不再此文讨论中,ajax请求不同一般的请求)
我使用的是
tomcat5.5.20
weblogic server 9

首先大家找个项目把下面3个文件都随便丢到一个目录中取,要相同目录
为了方便,我采用的Jsp,因为修改了不用重新加载,方便测试,至于Servlet只要把下面这样东西对照一下就没问题了

<%@ contentType="text/html; charset=GBK" %>
     对应response.setContentType("text/html; charset=GBK")
     建议这样来设置,分开类型和编码
          response.setContentType("text/html")
         response.setCharactorEncoding("GBK")

在weblogic和tomcat里都运行看看效果

testEncoding.jsp
<%@ page language="java" import="java.util.Date" contentType="text/html; charset=GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'test1.jsp' starting page</title>
  </head>  
  <body>
	<h5>提交到getEncoding1.jsp</h5><br>
    <a href="getEncoding1.jsp?aaa=羽飞&bbb=苍月无影">get请求</a>
	<form action="getEncoding1.jsp" method="post">
		<input type="text" name="aaa" value="羽飞"/>
		<input type="text" name="bbb" value="苍月无影"/>
		<input type="submit" value="提交"/>
	</form>
	<h5>提交到getEncoding2.jsp</h5><br>
	<a href="getEncoding2.jsp?aaa=羽飞&bbb=苍月无影">get请求</a>
	<form action="getEncoding2.jsp" method="post">
		<input type="text" name="aaa" value="羽飞"/>
		<input type="text" name="bbb" value="苍月无影"/>
		<input type="submit" value="提交"/>
	</form>
  </body>
</html>


getEncoding1.jsp
<%@ page language="java" import="java.util.Date" contentType="text/html; charset=gbk"%>
<%
	request.setCharacterEncoding("GBK");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
	<title>getEncoding1.jsp</title>
  </head>  
  <body>
    <%	
		String s1 = request.getParameter("aaa");
		String s2 = request.getParameter("bbb");
	%>
	request.setCharacterEncoding("GBK");<br>
	String s1 = request.getParameter("aaa");<br>
	<%=s1 %><br>
	String s2 = request.getParameter("bbb");<br>
	<%=s2%>
  </body>
</html>


getEncoding2.jsp
<%@ page language="java" import="java.util.Date" contentType="text/html; charset=gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
	  <title>getEncoding2.jsp</title>
  </head>  
  <body>
    <%	
		String s1 = new String(request.getParameter("aaa").getBytes("ISO8859-1"));
		String s2 = new String(request.getParameter("bbb").getBytes("ISO8859-1"));
	%>	
	String s1 = new String(request.getParameter("aaa").getBytes("ISO8859-1"));<br>
	<%=s1 %><br>
	String s2 = new String(request.getParameter("bbb").getBytes("ISO8859-1"));<br>
	<%=s2%>
  </body>
</html>


从getEncoding1.jsp和getEncoding2.jsp的编码方案来看,差别就在于一个设置了request的编码格式,一个没有设置,没有设置request编码格式的在取得参数的时候重新进行了一次编码

从运行状况来看,第一种方式的get请求在tomcat下会出现乱码,第二种方式在weblogic和tomcat都能正常工作

但是显然第二种方式太烦琐,而且当我们使用struts等框架时会变得棘手

第一种方式显然更好用,也更优雅,我们可以在web.xml里设置编码格式,然后使用filter从initparameter里读出编码格式,然后设置request的编码格式,管理也方便,不过目前在tomcat下的get请求会出现乱码,要解决这个问题就需要在server.xml里配置一项参数,server.xml在tomcat根目录/config文件夹下,tomcat5 post和get使用了不同的编码格式,而tomcat4使用的是相同格式,如果你使用tomcat4,就不会出现乱码
<Connector port="8888" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="tru e" URIEncoding="gbk"/>
<!-- 配置URIEncoding="gbk" 这里的编码格式一定要和你的页面编码格式一致 -->


现在重新启动tomcat,看看第一种编码格式是不是在tomcat下是不是能正常显示啦^_^

-
-

PS:javaeye出bug了?点保存草稿就发出来了
分享到:
评论

相关推荐

    Tomcat和weblogic中文乱码问题解决方案

    在 WebLogic 服务器中,解决中文乱码问题的方法与 Tomcat 服务器类似。只需要将上述过滤器注册到 WebLogic 服务器中即可。 中文乱码问题可以通过简单的解决方案来解决。只要将 request 和 response 的编码方式设置...

    weblogic和tomcat 下载附件乱码问题

    本文将详细探讨WebLogic与Tomcat环境下解决下载附件乱码问题的方法。 #### 一、问题背景 在Web应用程序中,当用户点击下载链接后,浏览器会根据服务器返回的信息来判断如何处理这个下载请求。如果服务器返回的...

    java获取tomcat端口.doc

    ### Java 获取 Tomcat 端口及服务器IP的相关知识点 #### 一、获取服务器IP地址和端口 在Java环境中,获取服务器的IP地址和端口对于开发人员来说非常重要,尤其是在部署应用程序或处理网络通信时。以下是几种常见...

    weblogic&java精华

    WebLogic&Java精华 weblogic&java精华java weblogic 面试题 下面是根据提供的文件信息生成的相关知识点: Java基础 1. Java 基础知识 在 Java 中,加载和启动 Servlet 后,为一个 Servlet 创建了一个还是多个...

    Tomcat和Weblogic部署纯html文件过程解析

    Tomcat是由Apache开发的一个开源的Servlet容器,它实现了Java Servlet和JavaServer Pages技术。Weblogic是Oracle公司的一个应用服务器,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库。 1. **...

    Weblogic 8.1 + MyEclipse的配置及其Java Web应用的部署和测试.doc

    Weblogic 8.1 是一款由甲骨文公司(Oracle)开发的企业级Java应用程序服务器,主要用于构建、部署和管理复杂的Java EE(Enterprise Edition)应用程序。MyEclipse 是一个集成开发环境(IDE),专为Java EE应用程序...

    tomcat-redis实现session共享

    在现代Web应用中,...这种方式不仅解决了跨服务器的Session同步问题,还提供了Session持久化的能力,即使Tomcat重启,用户的状态也能得以保留。同时,Redis的高性能和丰富的数据结构特性使得Session管理更加高效。

    运和软件公司Java编码规范

    - **开发应用服务器**:如Tomcat、JBoss、WebLogic等,应确保其版本与开发JDK相匹配,以保证应用的正常运行。 - **版本控制工具**:采用Git进行源代码管理,便于代码版本控制和团队协作。 3. **Java编码规范** ...

    【java编程课件】 JavaWEB编程.ppt

    Resin在解决Java编码问题和XML技术集成方面表现出色,其配置和使用相对Tomcat更简便,且可与多种IDE(如JBuilder、Eclipse)集成。 Servlet是Java Web服务器端编程的基础,它是一种Java类,用于扩展服务器的功能,...

    中间件tomcat5.5

    2. **不适合大型企业级应用**:对于需要高级管理特性和高可用性的大型企业应用,可能需要更全面的Java EE应用服务器,如JBoss或WebLogic。 综上所述,Tomcat5.5作为一款经典的Java Web服务器,它在教育和小型项目中...

    MapInfo MapXtreme for Java 培训教材

    MapXtreme for Java完全兼容J2EE,这意味着它可以无缝集成到任何基于Java的应用服务器,如Tomcat、WebLogic、JBoss等。通过Java Servlets、JSP(JavaServer Pages)或Java EE框架(如Spring、Struts)来构建Web应用...

    WebLogic Web Development

    WebLogic Server是一款由甲骨文公司提供的企业级应用服务器,它提供了用于构建、部署和管理分布式Java EE(Java Platform, Enterprise Edition)应用的平台。本话题涵盖了从基础的Java知识到WebLogic特定功能的诸多...

    myeclipse注册java编码

    根据提供的信息,我们可以深入探讨与"Myeclipse注册Java编码"相关的技术知识点,这些知识点主要集中在MyEclipse软件的使用、Java编程语言的基础语法以及代码加密解密等方面。 ### MyEclipse简介 MyEclipse是基于...

    java\CoreJava笔记\CoreJAVA_day01

    【Java核心知识体系】 ... - 部署:将程序部署到服务器,如Tomcat、WebLogic或JBoss等应用服务器。 通过以上知识点的学习和实践,可以为Java开发者打下坚实的基础,为从事各种Java相关的开发工作做好准备。

    Tomcat最佳实践T.omcat最佳实践

    1. **WEB SERVER介绍**:讲解了Web服务器的不同类型,如Jetty、Tomcat、Jweb、JBoss AS、GlassFish、Weblogic和WebSphere。其中,Tomcat因其良好的集群和监控支持,以及对最新Servlet和JSP规范的支持而备受推崇。 2...

    MyEclipse_6_Java_EE.rar_JAVA EE

    3. **服务器配置**:支持多种服务器,如Tomcat、WebLogic、JBOSS等,方便进行应用部署和调试。 4. **数据库工具**:内置的数据库管理工具,便于数据操作和SQL脚本执行。 5. **GUI设计器**:提供可视化的Servlet、JSP...

    Java面试50题(含答案)

    Java面试中的问题涵盖了许多核心概念和技术,以下是针对提供的部分内容提炼出的一些关键知识点: 1. 抽象类与接口: - 抽象类是部分实现的类,可以包含抽象方法(没有方法体的方法)和非抽象方法。Java中,一个类...

    springboot乱码问题解决方案

    在SpringBoot项目中,默认情况下,Tomcat服务器使用ISO-8859-1字符编码,而开发者通常使用UTF-8字符编码,导致乱码问题的出现。 二、解决方案 1. 配置文件中添加编码设置 在application.properties或application....

    Tomcat热加载Jrebel

    在Java Web开发中,Tomcat是一个广泛使用的应用服务器,用于部署和运行Servlet和JSP应用程序。然而,每次修改代码后,都需要重新启动Tomcat来使更改生效,这无疑降低了开发效率。为了解决这个问题,引入了热加载技术...

    MyEclipse 6 Java 开发中文教程

    学习如何在Tomcat、WebLogic、JBoss等服务器上运行和调试应用,以及使用EJB、JMS等企业级服务。 八、测试与部署 掌握单元测试和集成测试的方法,使用JUnit进行代码测试,了解如何打包项目为WAR或EAR文件,并将其...

Global site tag (gtag.js) - Google Analytics