在tomcat5.x版本 在tomcat安装目录的conf目录中的web.xml文件中有这样一段注释:
<!--
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
-->
这个注释就是与Servlet激活器相关的内容! 下面介绍操作步骤, 准备:这里设置一个虚拟目录名为vip,这个vip映射到D:\web目录下,即是说在浏览器中输入:http://localhost:8080/vip但可以访问到D:\web目录下的内容了.
>>步骤一:取消这个注释,即是说激活器生效.
>>步骤二:在D:\web\WEB-INF下新建一个web.xml并作如下配置:
<web-app>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/mytest/*</url-pattern>
</servlet-mapping>
</web-app>
注意:<url-pattern>/mytest/*</url-pattern>中mytest将会用到
>>步骤三:在D:\web\WEB-INF下建一个classes文件,然后在classes文件夹下放置一个名为HelloServlet.class的Servlet类文件
>>步骤四:在浏览器输入http://localhost:8080/vip/mytest/HelloServlet便可以访问了
>>总结原理:当我们使用步骤一,让激活器生效,再在所指定的WEB-INF目录下配置如步骤二web.xml文件,即是说,这个WEB-INF目录下的classes文件夹下的所有 Servlet程序(实现了javax.servlet包中的Servlet接口的java类经编译后的class文件)全部被激活,这样在浏览器中输入类名,便可以直接访问到这个class文件和执行效果了. 由于有了像36中所用到映射机制访问Servlet程序,所以这种激活形式访问很少使用.
缺省Serlet:
当Servlet的映射路径仅为一个正斜杠/时,这个Servlet便为一个默认的Servlet
>>应用一:在Servlet笔记第4点例子的基础上,我们对D:\web\WEB-INF目录下的web.xml文件修改如下:
<web-app>
<servlet>
<servlet-name>FirstName</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstName</servlet-name>
<url-pattern>/</url-pattern> <!--只是修改了这里-->
</servlet-mapping>
<web-app>
这样当我们访问,这个目录下的所有文件都会访问这个映射的Servlet程序.甚至是乱输入文件也会访问这个Servlet程序.
>>应用二:在tomcat-5.5.7的安装目录下的conf目录下有一个web.xml文件,其中第 316行开始对servlet进行了全屏Servlet缺省设置. 即是说,只要是其它的Servlet不能处理的请求都将交给这个默认的Servlet来处理更详细的说,当客户端发送请求时,服务器端首先会找非缺省的Servlet匹配,如果找到则匹配返回给客户端,如果不能找到则交给conf目录下 web.xml设置的缺省Servlet来处理(比如,访问静态的html文件或图片时,实际是这个缺省的Servlet处理的返回结果,当然它也可以对那些非法请求给出相应的处理结果) 这个缺省Servlet内容如下:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
如果注释掉这段内容,将会使所有的请求访问失效,并报告404错误!!!(留意默认的tomcat页面http://localhost:8080/会显示部份内容)