当前位置: 代码迷 >> Java Web开发 >> java web中如何判断当前服务是用的weblogic还是tomcat
  详细解决方案

java web中如何判断当前服务是用的weblogic还是tomcat

热度:2511   发布时间:2013-02-25 21:13:47.0
java web中怎么判断当前服务是用的weblogic还是tomcat?
1.页面验证码: 
response.reset();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
//out.clear();
//out=pageContext.pushBody();

tomcat中需要 out.clear();out=pageContext.pushBody();这两行才不报错!
而weblogic 中需要 //out.clear();//out=pageContext.pushBody();才不报错!
2.tomcat中对于前台页面传递中文参数url需要在后台 name=new String(name.getBytes("ISO-8859-1"), "gbk");转换编码格式才能正常接收中文参数。 而对于weblogic则不用这样转码,如果转码了反而出错了。 
因为前台代码为 ‘ <tr height="20" align="center" class="mytr" style="cursor:hand" onclick="sysaction22('<%=basePath%>argiSetAction!getSelArea.action?quId=<s:property value="#area.id.countyId"/>&&areaId=<s:property value="#area.id.localId"/>&&name=<s:property value="#area.localName"/>')"> ’ 参数的传递用了 <s: 标签,所以没法对参数进行转码,只能在后台转码,但是后台又要区分是weblogic和tomcat!
  请问怎么通过代码区别他们?


------解决方案--------------------------------------------------------
你可以写个配置文件 从配置文件里读取到底是那种web服务。
------解决方案--------------------------------------------------------
问题1:
<% String info = application.getServerInfo() %>
然后可以根据内容去判断。


但是,输出验证码为啥要 out.clear() 和 pageContext.pushBody() ?


问题2:
那是因为你没有设置Tomcat关于URI的缺省编码,所以它默认是ISO8859-1,而Weblogic默认就是UTF-8

找找 conf\server.xml

<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
------解决方案--------------------------------------------------------
1、我在Tomcat和Weblogic下都做过验证码,从没用过这两句话;

2、统一编码规范是最合理的,否则就自己手工转码吧;也可以尝试在Filter中 request.setCharacterEncoding(xxoo)。
  相关解决方案