Tomcat上开发Web应用如何保证兼容性


  近期,帮助 搭档将Tomcat上开发的 利用向Apusic移植时发现了一个兼容性问题 。

   利用中代码为:HashMap params = (HashMap) request.getParameterMap();

  而getParameterMap()在JCP 标准中的定义为:public java.util.Map getParameterMap()

  Returns a java.util.Map of the parameters of this request. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data. 申请的参数将返回一个java.util.Map. 申请参数是 申请发送的特殊信息 。关于HTTP servlets来说,参数包括在 查问字符串或者发出的表单数据中 。

  Returns: an immutable java.util.Map containing parameter names as keys and parameter values as map values. The keys in the parameter map are of type String. The values in the parameter map are of type String array.一个不可更改的java.util.Map包括参数名称( 要害字)和参数值(映射值) 。参数映射中的 要害字是String类型 。参数映射中的值是String数组类型 。

  可见 标准中定义的返回值只不过Map类型,而没有强制为HashMap. Apusic在实现的时候也是Map作为返回值,而Tomcat返回时(参考org.apache.catalina.connector.Request.java)便是一个 扩大自HashMap的ParameterMap类, 因此开发时如何作为Map来用也不会浮现问题,然而假如强制转换成HashMap就可能会与 其余 利用服务器产品 无奈正确兼容 。

  Tomcat是一款十分不错的开源Web服务器,许多公司在软件开发时都 使用Tomcat作为Web容器,而且Tomcat也较好的对Servlet和JSP 标准进行了 支撑, 因此许多在Tomcat上开发的 利用都 可以向 其余商业 利用服务器上进行移植 。

  然而,Tomcat由于未去通过 标准测试, 因此可能会存在没有 彻底参考 标准实现的 部分, 因此在开发中 提议开发人员去www.jcp.org上去下载一个 标准来进行参考,开发过程中尽可能依照 标准给定的参数和返回值来 使用系统的核心 性能,从而幸免在移植中浮现 毋庸要的问题 。

  附注:浮现问题也不可怕,总有许多 模式 可以解决,就如上文浮现的Map与HashMap的问题 。其实网上有许多Map向HashMap转换的代码, 可以添加个过渡参数将得到的Map进行一次转换就 可以不 批改 其余业务代码了 。