Tomcat和Websphere的区别

如题所述

Tomcat和Websphere主要区别是:
Tomcat是免费的,功能比较单一的web应用服务器;Websphere是IBM的收费平台,除了web应用服务器还包含大量的工具和其他相关应用开发平台。Websphere价格昂贵,单买一个但CPU的服务器也要十几万。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 是随需应变的电子商务时代的最主要的软件平台,可用于企业开发、部署和整合新一代的电子商务应用,如B2B,并支持从简单的网页内容发布到企业级事务处理的商业应用。WebSphere 可以创建电子商务站点, 把应用扩展到联合的移动设备, 整合已有的应用并提供自动业务流程。
Tomcat和Websphere的相似点是都是基于J2EE 和 Eclipse 等行业开放标准,并且它们使用公共的安装、管理、安全和编程模型。从开发看来就是类似的java开发平台,不过应用场景有差别。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-19
一、JSP的中文乱码问题
其根源在于:Web容器(Tomcat)默认的字符处理编码是iso-8859-1,对于需要在浏览器页面上显示中文的JSP程序,

但在程序中并没有指定中文的字符集,那么中文将在浏览器页面上显示为乱码。当然,前面所说的是指在Tomcat服务器下的,其他服务

器有些不是这样的,比如BEA Weblogic和IBM Websphere是从操作系统中取得默认的编码,然后按该编码来转码所有用户请求.Struts中

文问题有三种:发送请求时的中文问题、处理响应结果的中文问题和国际化资源文件的中文问题。

1. 发送请求时的中文问题

客户机向服务器发送请求时,根据所使用浏览器的不同可能会有不同的编码形式。不过通常情况下在请求到达Web容器前要将之转码,

转成某种固定的编码以方便Web应用的处理。这种问题有三种处理方法:

第一种(针对Tomcat 5 对POST请求有效,GET请求无效,因为Tomcat 5 对POST和GET请求时分别处理的)可以采用设置用户请求对象的编码形式,也就是以HttpServletRequest对象的编码的形式来进行用户请求的转码:

//将用户请求转码为GB2312、GB18030、GBK、UTF-8 等型,具体转为什么类型的编码以您的jsp文件的编码方式为准,java、jsp 、js 、css应保持一致的编码方式。这里以GBK为例。

request.setCharacterEncoding("GBK");

第二种(对GET请求有效),可以在Servlet中对用户输入的数据进行转码。Web容器接受到一个请求时,它会将它发往某个处理的Servlet。在Servlet中直接获取用户请求的数据,然后将之转码为需要的格式,例如把数据转换为GBK格式:

String username = request.getParameter("username");

username = new String(username.getBytes("iso-8859-1”), "GBK");

以上两种方法都是很常用的,但第一种是每个页面都要去修改,当JSP页面很多时比较麻烦,第二种就每个发送的数据都要转码,也很麻烦。

第三种,就是采用Filter过滤器方式,将用户的所有请求都通过过滤器进行转码,这种方法就克服了以上两种方法的缺点。代码如下:

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain ) throws IOException, ServletException {

request.setCharacterEncoding("GBK");

//response.setContentType("text/html;charset=GBK");

chain.doFilter(request, response);

}

这里转码为GBK过滤器的主要代码,当然还要把这个类要在web.xml文件中部署。

2. 处理响应结果的中文问题

响应的结果包括Servlet、JSP和HTML三种情况,可以通过以下方式设置响应结果编码:

对于Servlet,可以在Servlet中为其设置响应代码类型,代码如下:

response.setContentType("text/html;charset=GBK"); 也可把这句加到上面的Filter中,如注释掉的部分。

有人说用 response.setCharacterEncoding("GBK"); 无效,必须用 response.setContentType("text/html;charset=GBK"); 本人没试过。

对于JSP,是比较方便的,只需要在JSP最前部分按如下方式声明:

<%@ page contentType="text/html;charset=GBK"%>

对于HTML,其和JSP文件基本类似,也是在页面最前部分按如下方式声明:

<head>

<META HTP-EQUIV="contentType" CONTENT="text/html;charset=GBK">

</head>

3.? 国际化资源文件的中文问题

一个Struts应用程序中,可以配置多个资源包,无论是Action、ActionForm还是JSP都可以访问这些包中的资源。资源包就是由扩展名为.properties的文件组成的一组具有相同前缀的文件,如ApplicationResources_zh_CN.properties、ApplicationResources_zh.properties和ApplicationResources.properties。这些文件就构成一个Struts的资源包,它们都有一个统一的前缀ApplicationResources,凡是有相同前缀的资源文件就都属于一个包。

当用MyEclipse编写资源文件时,默认是不能保存中文的,因为默认保存编码的格式是ISO-8859-1,这就需要修改为gb2312或者gbk编码格式。Windons -->Preferences-->General -->Content Types-->Text-->Java Properties File,在最下方把其Default encoding改为"UTF-8”,然后"update”就可以保存中文了。但就这样保存的中文还是不能够在页面上使用的,因为Web容器默认是使用ISO-8859-1,也就会把中文用ISO-8859-1的格式发送给客户页面,显示的还是乱码,这就是JAVA国际化的问题。JAVA是支持unicode编码格式的,unicode是国际统一通用编码,所以不管什么格式的编码转化为unicode编码肯定不会显示乱码的。这个时候就是需要把资源文件的UTG-8编码格式转化为unicode编码格式,而SUN公司又提供了这样的一种工具。在JDK的安装目录bin下,有一个叫native2ascii可执行文件,这个是专门来进行资源文件转码的。打开cmd,进入JDK的bin目录下,把资源文件拷贝到该目录下,执行该命令。比如:

native2ascii –encoding GBK ApplicationResources.properties ApplicationResources_zh_CN.properties 就是把GBK编码格式ApplicationResources.properties转化为unicode编码格式ApplicationResources_zh_CN.properties,这样显示页面时就不会出现乱码了。
相似回答