tomcat 6.0.35 设置虚拟目录 故障1

来源:互联网 发布:手机播放器软件 编辑:程序博客网 时间:2024/06/15 18:33


如果将“<Context path="/hbf" docBase="E:\java\my" />”放在了"<Host></Host>"外面的话

,启动tomcat6.0将会出现警告: <!--no rules found matching-->,而且设置的虚拟目录页不

生效。2012-08-20

===========================================
第六步:配置虚拟目录

打开 Tomcat6.0\conf\server.xml 文件,在 <Host> 和 </Host> 之间加入

<Context path="/myapp" docBase="D:\myapp" debug="0" reloadable="true"

crossContext="true" />
========================================

在d:\myapp文件下建立好文件夹及文件:WEB-INF\web.xml

启动tomcat服务startup.bat,在浏览器地址栏:输入:http://localhost:8080/myapp 即可访问首页 index.html,如果没有则建立好。

 

二、在d:\myapp建文件夹classes,将编译好的servlet文件(文件名.java):文件名.class拷贝进来。

三、在d:\myapp\WEB-INF\web.xml里注册servlet:

    <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
 <servlet>
        <servlet-name>AnyName</servlet-name>
        <servlet-class>HelloWorldExample</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AnyName</servlet-name>
        <url-pattern>/demo/index.html</url-pattern>
    </servlet-mapping>
     <servlet-mapping>
        <servlet-name>AnyName</servlet-name>
        <url-pattern>/action/*</url-pattern>
    </servlet-mapping>
     <servlet-mapping>
        <servlet-name>AnyName</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

     <welcome-file-list>
        <welcome-file>test.do</welcome-file>

    </welcome-file-list>
</web-app>

四、保存。在浏览器地址栏:输入:http://localhost:8080/myapp/demo/index.html访问.

 

 


找到%tomcat%\conf\server.xml,在</Host>之前加入:
<Context docBase="d:\myJsp" path="/abc" />
保存文件之后,重启Tomcat即可。注意:大小写不能错! 斜杆"/"或"\"的方向别搞错。

方法二:该方法推荐使用,比较简单。

在%tomcat%\conf\Catalina\localhost(该目录可能需要手工创建)下新建一个文件abc.xml,注

意文件名中的abc就表示虚拟目录的名称,所以不可随意命名,该文件的内容为:
<Context docBase="d:\myJsp" />
重启Tomcat即可。


第一步:下载j2sdk和tomcat:到sun官方站点
    最新的jdk为1.6.04,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上
第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后设置按照路径进

行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中

添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2):
JAVA_HOME=c:\j2sdk1.4.2
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它

代表当前路径)
path=%JAVA_HOME%\bin

 接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
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,在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)th
rows 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" />
 

======================

这几天一直在看tomcat 6的有关内容,在其文档中看到tomcat 5,6关于context的配置不同于

tomcat 4,不推荐在server.xml中进行配置,在context.xml文件中进行配置才是更好的方法。

回想以前所有的项目都是在server.xml中配置context的,每次部署一个新的应用或者修改

context内容都要重新启动tomcat,导致应用总是要中断服务一小段时间,比较不方便,而且多

个context都在server.xml中,显得有些杂乱。于是决定使用在context.xml中进行配置应用的方

式。在tomcat_home/ conf目录下有一个context..xml文件,修改其中内容之后,tomcat 能够自

动reload所有的应用。
我的应用是在 tomcat_home/webapps下部署了多个应用,这多个应用的context配置是不同的。

于是我把原来server.xml有关 context的部分(多个)复制出来,粘贴到context.xml中,保存

之后,启动tomcat ,发现启动的时候出错,看来tomcat是不支持在一个context.xml中配置多个

不同应用的。上网上google有关在context.xml中配置多个应用的方法,遗憾的是,始终无法找

到。后来仔细阅读tomcat 文档,终于找到了解决方法,在应用下面的META-INF文件夹下建立

context.xml文件就可以满足应用的定制需求。具体路径就是:

tomcat_home/webapps/yourApp/META-INF/context.xml,这样每个应用都可以拥有各自的配置,

修改了该文件中的内容,tomcat可以自动重新装载该应用,非常的方便。下面是一个可以自动重

新装载servlet和javabean(方便debug),带有数据库连接池(以Oracle为例)的context.xml文

件内容:
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" crossContext="true">
 <!-- Default set of monitored resources -->
 <WatchedResource>WEB-INF/web.xml</WatchedResource>
 <!-- Uncomment this to disable session persistence across Tomcat restarts -->
 <!--
  <Manager pathname="" />
 -->
 <Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource"
     driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott"
     password="tiger"
     maxActive="20"
     maxIdle="10"
              maxWait="-1"/>
 <Logger className="org.apache.catalina.logger.FileLogger"
  prefix="localhost_DBTest_log." suffix=".txt" timestamp="true" />
 <Valve className="org.apache.catalina.valves.AccessLogValve"
  prefix="localhost_access_log." suffix=".txt" pattern="common" />
</Context>

阅读后发现,我们之前也果然是将很多的Context配置在同一个server.xml下;
随即照此方法去尝试,果然好了很多,那些警告不在出现了...
但是,却提示
”Cannot load JDBC driver class 'oracle.jdbc.OracleDriver' 等“,显然没有找到driver

遂将有关驱动的jar copy到//Tomcat 6.0/lib目录下面。

再试,终於ok了,^^