Tomcat是Apache的一个子项目,也是一个开源项目,主要是用于J2EE Web容器,由于一个开源项目,在学习与开发测试中经常被应用。目前在商业经常用到的Web服务器是BEA WebLogic。
这时选择Tomcat作为学习与测试环境,以下是一些基本配置:
一、下载Tomcat,这里是Tomcat5.5.15,直接安装,端口号设置为:8080。
注意:JDK1.4与TOMCAT5.5不能配置在一起,这样程序跑不起来,TOMCATL5.5,必须要JDK1.5以上的,才可以
安装目录:1、webapps:主要用于web应用程序部署,比如你可以把你的应用程序包,如war文件拷到该目录,容器会自动部署。
2、conf:主要是放置Tomcat服务器的相关配置文件。
3、common:容器全局变量的文件放置地方,如common/lib下就是放置一些需要全文配置的文件包。
二、J2EE的相关部署规范:
一般来说作为一个符合规范的WEB程序,会包括以下文件夹和文件:
/WEN-INF/:放置一些配置文件与不希望外部程序访问的隐私文件。在网络上是不允许访问该文件夹的。
在/WEN-INF/下有一个web.xml文件,这是对当前应用程序的相关设置,资源寻找等。
/WEN-INF/classes:是应用程序的根路径
/WEN-INF/lib:放置需要引入的包,应用程序导入的包先从这里开始寻找,其次到容器的全局路径下$CATALINA_HOME/common/lib下寻找。
以下是基本文件夹:
/tomcat
/common
/lib
/classes
/conf
/webapps
/root
web.xml
/WEB-INF
/lib
/classes
三、容器的配置(server.xml)
主目录/conf下server.xml文件是对web服务器的配置:
以下是一些常见的设置,http端口设置,找到:
把8080端口改为你喜欢使用并且当前没有使用的端口,以后就可以利用该端口来访问测试用的网站了。
找到:
….
Host name=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”
xmlValidation=”false” xmlNamespaceAware=”false”>
….
在他们之间可以添加一个
其中path表示网络访问的上下文路径;reloadable表示可以在运行时在classes与lib文件夹下自动加载类包;docBase表示应用程序的路径,在Windows中如:docBase=”E:\java\new”;workDir表示是缓存文件的放置地点,可以方便跨平台移植时不用重编译,这样,应用程序就可以放到硬盘上的任意地方了。
还有一个方法也可以做到这点:编写一个xml文件,然后放到Tomcat/conf/Catalina/相应的网站(如localhost)/下,如上:编写一个文件new.xml内容如下:
放到Tomcat/conf/Catalina/localhost/下,在浏览器打开:http://localhost/new就会转向到E:\java\new程序。
四、Tomcat5中文解决
对于中文系统主要有以下问题:
1、表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或为???;
2、直接通过url如:http://localhost/test.jsp?name=中国,这样的get请求在服务端用request.getParameter(“name”)时返回的也是乱码。
原因:
1、Tomcat的J2EE实现对表单提交即POST方式时处理参数采用缺省的iso-8859-1来处理;
2、Tomcat的get方式提交的请求对query-string处理时采用了和post不一样的处理方式。
解决办法:
首先给所有的JSP文件都加上:
<%@ page contentType="text/html;charset=gb2312" %>
1、post方法:
先实现一个Filter,设置处理字符集为GBK。(在Tomcat的webapps/servlet-examples目录有一个完整的例子,参考web.xml和SetCharacterEncodingFilter的配置)。
1)、把$TOMCAT/webapps/servlets-examples/WIN-INF/classes/filters/SetCharacterEncodingFilter.class文件copy到应用程序/WIN-INF/filters下,如果没有filters目录,就创建一个。
2)、在web.xml里加入以下几行:
3)、完成。post方法还可以在编程时,在用到request的前面添加语句:
<%request.SetCharacterEncodin("GBK");%>
也可以解决中文问题。
2、get方式的解决办法:
1)、打开server.xml文件,找到区块:
加上一句URIEncodeing=”GBK”,如上所示。
2)、重启Tomcat,乱码就可解决。