Websphere与Tomcat的差异

1、page Content-Type的问题

 在tomcat中,如果a.jsp包含b.jsp,那么a.jsp和b.jsp两个文件上都要加上< %@ page contentType="text/html;charset=GBK" % >,否则jsp页面上会出现中文乱码,然而在websphere上,如果a.jsp和b.jsp上都存在< %@ page contentType="text/html;charset=GBK" % >的话,那么将抛出异常:不能出现多个 contentType', 出现这种情况,

解决方法为:将b.jsp中的< %@ page contentType="text/html;charset=GBK" % >去掉。

2、

java 代码
  1. String parentBSID = (String)request.getAttribute("parentBSID");    
  2. pageContext.setAttribute("parentBSID", parentBSID);   

反编译tomcat与websphere应用服务器上对应的PageContextImpl类,结果如下:

tomcat 的standard.jar包中对PageContextImpl的实现是:

java 代码
  1. mPage = Collections.synchronizedMap(new HashMap());  

而was 的webcontainer.jar中对PageContextImpl的实现是:

java 代码
  1. attributes = new Hashtable(16);  

tomcat和websphere对pageContext的实现最关键的差别就是前者使用了HashMap,后者使用了Hashtable,Java API Document 对Hashtable.put(Object key,Object value)有明确说明:“Maps the specified key to the specified value in this hashtable. Neither the key nor the value can be null.

3、カスタムタグのattributeで配列を使用する場合
type="java.lang.String[]"
Tomcat ○
WAS  ×

4,Javaプログラム中で、

WASの場合、以下の式
 request.removeAttribute(name)
を実行する時、nameがnullだとNullPointerExceptionが発生する。
Tomcatの場合、上記例外は発生しないが、(上記例のnameがnullの可能性がある
場合には)下記のように実装する必要がある。

 if (name != null) {
  request.removeAttribute(name);
 }

5,taglib妥当性検証エラー

c:choose, c:when, c:otherwise タグの記述方法について
 一般的な記述の仕方:
  <c:choose>
  <c:when ...>...</c:when>
  <c:otherwise>...</c:otherwise>
  </c:choose>

ただし、この場合無用な改行文字が多数出力される。
 それを嫌って、以下のような記述が可能である。文法的にも問題ない。
  <c:choose
  ><c:when ...>...</c:when
  ><c:otherwise>...</c:otherwise
  ></c:choose>
 Tomcatではこの記述で問題ないが、WASでは正しくパースできず、エラーとなる。
 この問題を回避するため、
 無用な改行文字の出力を抑止したい場合は、必要に応じて
  <c:choose><c:when ...>...</c:when><c:otherwise>...</c:otherwise></c:choose>
 というように、間に改行を入れずに一行で記述する。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值