tomcat6.0配置
来源:互联网 发布:linux scp复制文件夹 编辑:程序博客网 时间:2024/05/16 10:31
tomcat6.0配置
第一步:下载jdk和tomcat:JDK下载 Tomcat下载
最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上
第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\Program Files\Java):
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试JDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):
CATALINA_HOME:c:\tomcat
CATALINA_BASE:c:\tomcat
TOMCAT_HOME: C:\Tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;
【注意最新版本的Tomcat中可能没有common这个文件夹了。所以servlet-api.jar应该的路径为
%CATALINA_HOME%\lib\servlet-api.jar;请根据自己的情况自己修改!】
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
</web-app>
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
6.重启Tomcat
7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
第四步:建立自己的Servlet:
写入你的第一个Servlet:
在你新建的Application myapp/WEB-INF/classes/test目录下新建HelloWorld.java
package test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>");
out.println("This is my first Servlet");
out.println("</title></head><body>");
out.println("<h1>Hello,World!</h1>");
out.println("</body></html>");
}
}
然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servl
et.*
那么就是应该把C:\Tomcat\common\lib里面的servlet-api.jar文件拷贝到C:\JDK\jre\lib\ext中,再次编译,就没有问题了!
然后在Tomcat目录里面的C:\Tomcat\webapps\myapp里面按如下的文件结构:
myapp\index.jsp
myapp\WEB-INF\classes\test\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个
里面)
然后在浏览器中输入http://localhost:8080/myapp/HelloWorld,于是Server众望所归的报错了:Error 404--Not Found
怎么回事呢?
Servlet必须使用C:\Tomcat\webapps\myapp\WEB-INF这个目录下面的web.xml文件进行注册,
用EditPlus打开这个web.xml文件,
在<web-app></web-app>添加下面这段程序:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>test.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
为什么呢?
因为 这样的结构
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>test.HelloWorld</servlet-class>//类的路径
</servlet>
表示指定包含的servlet类.
而以下的结构
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
表示指定HelloServlet应当映射到哪一种URL模式。
在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/myapp/HelloWorld,,那么偌大一个Hello,World!等
着你呢,恭喜你!
第五步:建立自己java Bean
1. 在你新建的Application myapp/WEB-INF/classes/test目录下新建TestBean.java
package test;
public class TestBean
{
private String name =null;
public TestBean(String nameInit){
this.name = nameInit;
}
public void setName(String newName){
this.name=newName;
}
public String getName(){
return this.name;
}
}
然后照样用javac TestBean.java来编译这个文件。
2.然后在你新建的应用程序目录myapp下新建一个新的jsp文件:testBean.jsp
<%@ page import="test.TestBean" %>
<html>
<head>
<title>Test Bean</title>
</head>
<body>
<center>
<%
TestBean testBean = new TestBean("Http://yexin218.cublog.cn");
%>
Java Bean Test:
The author's blog address is<%=testBean.getName()%>
</center>
</body>
</html>
好了,确定各个文件的位置:
myapp\index.jsp
myapp\testBean.jsp
myapp\WEB-INF\web.xml
myapp\WEB-INF\classes\test\HelloWorld.class
myapp\WEB-INF\classes\test\TestBean.class
3.重启Tomcat如果需要的话,在浏览器输入:http://localhost:8080/myapp/testBean.jsp 幸运的话就会看到:
Java Bean Test: The author's blog address isHttp://yexin218.cublog.cn
这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。
第六步:配置虚拟目录
打开 Tomcat6.0\conf\server.xml 文件,在 <Host> 和 </Host> 之间加入
<Context path="/myapp" docBase="D:\myapp" debug="0" reloadable="true" crossContext="true" />
以上配置的源代码:
文件:
myapp.rar
大小:
3KB
下载:
下载
附注:
2008年4月11日---------全面整理
2008年9月6日--------------修改J2sdk为JDK,避免读者误解。
Tomcat 6.0服务器server.xml配置文件
使用Tomcat,如果对它的配置不能深入地理解,在实际工作中可能会遇到一些问题。
当安装完Tomcat 6.0以后,默认的conf/server.xml文件,去掉注释以后,如下所示:
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8085" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
</Server>
下面基于这样一个基础的配置并结合Tomcat的体系结构,来说明各个配置元素的含义。关于Tomcat的体系结构,可以参考文档docs/architecture/overview.html。
<Server> 元素
<Server>元素表示的是整个Catalina Servlet容器,在conf/server.xml中是最顶层的配置元素,也就是说,使用Tomcat WEB服务器是基于这样一个容器的,能够容纳各种资源、连接、虚拟主机等等。当然,如果你实现了org.apache.catalina.Server接口,也可以在server.xml中配置<Server>元素,是启动容器为自己实现的,这需要在<Server>元素中配置指定的属性。
实现org.apache.catalina.Server接口,必须支持该接口定义的三个属性:className、port、shutdown。
className属性
指明实现org.apache.catalina.Server接口的类,如果在<Server>元素中没有指定className的值,就会默认指定className="org.apache.catalina.core.StandardServer",使用标准的实现类。
port属性
指定TCP/IP端口号,通过该端口号可以与Tomcat服务器进行通信,比如执行shutdown命令来关闭Tomcat服务器。
shutdown属性
通过为sutdown指定一个字符串,可以通过发送该字符串作为消息来关闭Tomcat服务器。
对于上面的配置文件中,<Server>元素配置如下:
<Server port="8005" shutdown="SHUTDOWN">
显然省略了className属性,使用默认的org.apache.catalina.core.StandardServer,端口号为8005,通过建立的TCP/IP连接,可以使用命令向端口8085发送消息,来影响Tomcat服务器的行为,例如关闭服务器。shutdown="SHUTDOWN",如果Tomcat在启动以后,接收到端口8085发送的消息为SHUTDOWN,则开始执行关闭的动作。
<Service>元素
<Server>元素是<Service>元素的顶层配置,从<Server>元素的含义来看,<Service>元素表示存活于一个顶层的Catalina Servlet容器中的组件,其中,一个<Server>元素中可以配置一个或者多个<Service>元素。作为组件,应该通过某种方式来提供一定的服务。
其中,作为一个服务组件,必须实现org.apache.catalina.Service 接口。默认,Tomcat实现了一个标准的服务器组件,具体实现类为org.apache.catalina.core.StandardService。一个<Server>元素可以配置两个属性:
className属性
默认使用Tomcat实现了标准服务组件,当然可以定义自己的服务组件,并在<Server>元素中配置指定。
name属性
用来标识在<Server>元素中唯一的一个服务组件。
从上面的配置文件可以看到,<Server>元素的配置块:
<Service name="Catalina">
<Connector port="8085" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
<Connector>元素
<Connector>元素表示连接器,是容器与外部进行交互信的桥梁。该元素定义的连接器是在一个<Service>元素表示的组件中,一个<Service>元素中可以配置多个连接器<Connector>元素,表示提供服务的组件通过不同的连接方式与容器外部进行通信,从而完成一定的操作。
通过上面配置可以看到,配置了两个连接器,一个是基于HTTP协议的连接器,一个是基于AJP协议的连接器。
上面<Connector>元素属性包括port、protocol、redirectPort、connectionTimeout,分别表示端口号、通信协议、重定向端口号、连接超时时间。
<Connector>元素可以配置的属性非常多,这是由连接的特点所决定的,可以对连接的状态进行详细设置。可以参考Tomcat文档docs/config/http.html。
<Engine>元素
<Engine>元素表示Catalina Servlet容器中针对</Service>元素定义的服务,执行请求处理的一个引擎。当然作为这样一个引擎,它可能将通过<Connector>元素配置的不同连接方式,接收容器外部请求的数据,经过处理,将处理后的数据,再通过连接器传送给容器外部执行请求的载体,例如用户。
可见,存在一个或者多个连接器绑定在一个引擎上,相互协调完成特定服务定义的功能。
<Engine>元素可以配置的属性有:
className属性
className属性指定引擎的实现类,可以实现自定义引擎,但是必须实现org.apache.catalina.Engine 接口,Tomcat同样实现了默认的标准引擎,通过org.apache.catalina.core.StandardEngine类定义的。
defaultHost属性
指定默认主机。在一个<Engine>元素中可以配置多个虚拟主机,每个虚拟主机都通过name属性来识别,但是在<Engine>元素中必须指定一个在其中存在的主机配置,通过defaultHost来默认指定。
name属性
用来标识该引擎的逻辑名称。
通过从上面的配置可以看到,name="Catalina",defaultHost="localhost",而且localhost已经在<Engine>元素中存在的<Host>元素中配置。没有指定className属性,表示默认使用org.apache.catalina.core.StandardEngine引擎。
<Host>元素
<Host>元素表示对虚拟主机进行配置,可以在一个<Engine>元素中配置多个<Host>元素,也就是指定多个虚拟主机。虚拟主机就是通过域名这样的逻辑名,来定位到物理存在的主机,或者主机上的目录。
同样,如果想自定义主机实现类,可以实现org.apache.catalina.Host 接口,否则使用默认的标准主机实现org.apache.catalina.core.StandardHost类。
上面对<Host>元素的配置如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
属性说明如下:
className属性
指定主机实现类。这里使用默认的标准主机,可以省略。
name属性
虚拟主机名称,也就是一个逻辑域名标识符,例如localhost,如果连接器<Connector>配置元素指定了HTTP协议和8085端口,则可以通过浏览器使用前缀http://localhost:8085来进行通信;如果你将本地IP地址127.0.0.1绑定到任意一个域名,例如www.shirdrn.org上,可以通过浏览器使用前缀http://www.shirdrn.org:8080来与容器进行本地交互。
appBase属性
appBase属性表示应用程序的根目录,也就是通过虚拟主机可以访问的资源所在的基路径,例如,上面appBase="webapps",因为使用Tomcat部署应用程序,默认部署到webapps目录下面,这种情况是,你只能将应用程序部署后存放到webapps目录下,其实通过<Host>元素的子元素<Context>元素的docBase来指定实际应用程序的位置,也就是在物理文件系统中的位置(不一定就是在webapps目录下)。
<Host>元素还有很多属性,可以参考docs/config/host.html。
<Context>元素
在<Host>元素中可以配置一个或者多个<Context>元素。如果配置多个的话,必须使得每个<Context>元素对应一个唯一的path。每个<Context>元素表示一个Web应用程序,可以在该元素中来对指定的Web应用程序详细配置。
例如,存在这样的一个主机配置中,包含了<Context>元素:
<Host name="beta.shirdrn.org" appBase="/usr/local/tomcat/webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="/" docBase="/home/javaApp/myApps" workDir="/usr/local/tomcat/work" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="appLog." suffix=".txt" timestamp="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="test_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
</Context>
</Host>
虚拟主机逻辑名称为beta.shirdrn.org,实际我的项目应用程序目录docBase为/home/javaApp/myApps,应用程序部署基路径appBase为/usr/local/tomcat/webapps,path设置为“/”表示前缀是“/”,从根目录请求,通过HTTP连接器,指定端口为8085,可以通过浏览器使用前缀http://beta.shirdrn.org:8085来访问虚拟主机上的资源。