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来访问虚拟主机上的资源。

 

 

原创粉丝点击