日期:2014-05-18  浏览次数:20710 次

servlet 路径问题
这是我的一个叫myroot目录下的web.xml,内容如下:
<web-app>
        <servlet>
                <servlet-name>
                        hi
                </servlet-name>
                <servlet-class>
                        HelloWorld
                </servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>
                        hi
                </servlet-name>
                <url-pattern>
                        /myclass
                </url-pattern>
        </servlet-mapping>
</web-app>
通过myroot/myclass可以访问,为什myroot/servlet/hi   就不能访问呢
是不是因为设置了servlet-mapping呢
我的服务器是tomcat5.0

------解决方案--------------------
Tomcat 5.0\conf下面有个web.xml,它设置的是所有web应用公共的部分,你打开它,把里面
<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-mapping>
<servlet-name> invoker </servlet-name>
<url-pattern> /servlet/* </url-pattern>
</servlet-mapping>
的注释去掉,这样在你自己的web.xml里不写 <servlet> 和 <servlet-mapping> ,也可以使用myroot/servlet/类名 进行访问了(比如myroot/servlet/HelloWorld),因为在全局的url-pattern里设置了/servlet/*,会由InvokerServlet去进行调用,或者你在自己的web.xml里只设置
<servlet> ,这样使用myroot/servlet/类名或者myroot/servlet/servlet-name(比如myroot/servlet/hi)都可以进行访问.