`
sorphi
  • 浏览: 46444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

将应用从weblogic移植到tomcat时学习了一个servlet规范

阅读更多
一个遗留web网页(gbk编码)需要POST方式请求一个servlet应用(utf-8), 得写一个filter进行转码。关于form表单提交的编码问题,可以参考这个:Java Web应用的form文字编码问题,或者在IE下面指定表单编码方式

 

参照上面的第一个文档,这个filter很好写:

 

public void doFilter(ServletRequest servletRequest,
                       ServletResponse servletResponse,
                       FilterChain filterChain) throws
      IOException, ServletException {
    if(servletRequest.getCharacterEncoding()==null){
      String encoding = servletRequest.getParameter("_charset_");
      if(encoding == null){
        encoding = _defaultEncoding;
      }
      if (encoding != null) {
        servletRequest.setCharacterEncoding(encoding);
        if(LOG.isDebugEnabled()){
          LOG.debug("Set request encoding to:"+encoding);
        }
      }
    }
    filterChain.doFilter(servletRequest, servletResponse);
  }
 

 

 

这段代码在weblogic8下面应用良好,gbk编码的网页很好的提交到一个utf-8编码的servlet应用,没有其他的额外转码工作。

 

当移植到tomcat6下面时,乱码问题出现了。即使通过一个utf-8编码的网页来提交依然乱码,request中的数据是iso-8859-1编码。很久没有碰到过乱码问题了,于是我又不自信起来,找了每个环节的问题。最后终于发现是这个filter没有遵循一个servlet规范,ServletRequest的文档中说:

setCharacterEncoding

public void setCharacterEncoding(java.lang.String env)
                          throws java.io.UnsupportedEncodingException
Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().
Parameters:
a - String containing the name of the chararacter encoding.
Throws:
java.io.UnsupportedEncodingException - if this is not a valid encoding

 

我错了,光看方法名字就开练,api文档看得不够仔细。在这次迁移工作中,学了这么一个servlet规范。

 

 

 

 

 

分享到:
评论

相关推荐

    TOMCAT移植到JBOSS

    移植一个Web工程从TOMCAT到JBOSS的过程,实际上是对工程的部署环境、配置以及依赖关系进行调整,以适应新的应用服务器环境。具体步骤如下: - **更改部署包格式**:将部署在TOMCAT中的工程文件夹(test)名称更改为...

    将应用部署到weblogic10及oraclelinux时遇到的问题.pdf

    在将应用从Tomcat环境移植到WebLogic 10及Oracle Linux时,开发者经常会遇到一些挑战。本篇文章将深入探讨这些问题及其解决方案。 首先,我们遇到的第一个问题是“意外的异常”,表现为NullPointerException。这个...

    servlet-api.jar

    当然这个jar的接口是按照servlet规范编写的,面向标准接口编程的好处就是我们开发出的一个web工程即可以部署到tomcat、也可以部署到weblogic或其他servlet容器下运行,所有的servlet容器都使用了相同接口所以我们...

    TOMcat-v1.6.zip

    Tomcat是Apache软件基金会的一个开源项目,它是一个小巧且高效的Java应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)。 【描述】"TOMcat-v1.6.zip" 的描述简洁明了,仅仅提供了文件名,意味着这个...

    常用J2EE应用服务器简介.docx

    Tomcat,另一方面,是一个免费开源的Web应用服务器,主要实现了JSP和Servlet规范。它是Apache软件基金会Jakarta项目的一部分,由社区驱动,具有轻量级、稳定性和良好的性能。Tomcat适合小型到中型的Web应用,尤其是...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    六大应用服务器用途及简介.docx

    尽管它不支持EJB,但Tomcat由于其轻量级、高效和对最新Servlet和JSP规范的支持,成为了非常流行的选择,特别受到Java爱好者的青睐。Tomcat由Apache Software Foundation开发,与Apache HTTP Server密切相关。 这些...

    认识j2ee规范

    例如,WebLogic、Jboss、Tomcat等服务器就是这些规范的具体实现,它们为开发者提供了开发和部署J2EE应用的平台。 **设计模式**是另一种规范,它代表了在特定情境下解决问题的最佳实践。例如,工厂模式、单例模式、...

    J2EEWEB开发教材

    - Tomcat 是一个强大的 Servlet 容器,通过它能够方便地创建、部署和管理 Java Web 应用。 #### 四、Java Servlet **4.1 第一个 Servlet** - **4.1.1 基本结构**:包括 `doGet` 和 `doPost` 方法。 - **4.1.2 输出...

    J2EE及其相关的JAVA知识

    它的核心目标是提供一个规范化的技术架构,简化并标准化应用程序的开发和部署过程,增强应用的可移植性、安全性和重用性。J2EE不是一个具体的软件产品,而是一系列技术规范的集合,这些规范定义了如何构建可扩展的、...

    J2EE基础课程资料PPT课件

    6. J2EE 打包与部署:J2EE 应用通常被打包成WAR或EAR文件,然后部署到应用服务器上,如Tomcat、WebLogic或JBOSS。 **第二章 J2EE Web 开发基础**: 这部分主要涵盖HTML、CSS、JavaScript的基础,以及Servlet和JSP在...

    Java ee 企业应用开发:第1章 J2EE开发介绍.ppt

    J2EE提供了一个跨平台、可移植的环境,确保应用程序可以在任何支持J2EE规范的应用服务器上运行。常见的J2EE应用服务器有IBM WebSphere、Oracle WebLogic、Apache Tomcat等。 Java平台分为三个主要版本:J2ME(Java ...

    J2EE基础知识语法学习手册

    J2EE应用部署在应用服务器(如Tomcat、GlassFish或WebLogic)中,这些服务器提供运行时环境。了解如何配置和管理应用服务器,以及如何打包和部署WAR和EAR文件是实际开发中的关键技能。 9. **MVC(Model-View-...

    JAVA 插件化漏洞扫描器.zip

    2. **Tomcat**:作为Apache软件基金会的一个开源项目,Tomcat是Java Servlet和JavaServer Pages(JSP)的轻量级应用服务器。由于其轻便性和广泛使用,Tomcat的安全漏洞也是黑客攻击的目标。扫描器的POC(Proof of ...

    初学者如何开发出一个高质量的J2EE系统

    1. **Java和J2EE的区别**:Java是一种编程语言,而J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级应用的平台,它包含了多个技术和规范,如Servlet、JSP、EJB等。 2. **J2EE架构**:J2EE主要由...

    Java开源社区相关技术背景(企业版)

    WebSphere和WebLogic是商业产品,提供全面的企业级服务,而JBoss主要通过提供服务盈利,Tomcat则是一个轻量级的开源服务器,主要用于Servlet和JSP的运行。 开发工具方面,Eclipse和MyEclipse是Java开发者的常用选择...

    j2ee企业级培训教程

    8. **J2EE容器** - 容器如Tomcat、GlassFish和WebLogic等,为EJB、Servlet和JSP等组件提供运行环境,管理它们的生命周期,并提供安全、事务和资源管理等服务。 9. **源码分析** - "有源代码!"意味着学习者可以深入...

    J2EE留言系统

    它提供了一个规范化的、可移植的、多层架构的框架,支持多种服务,包括安全性、事务处理、数据访问和并发控制等。J2EE技术栈主要包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java ...

Global site tag (gtag.js) - Google Analytics