tomcat 中 /servlet url 映射
發表于:2007-07-04來源:作者:點擊數:
標簽:
servlet servlet-nameCounterServlet /servlet-name servlet-classmypack.CounterServlet /servlet-class /servlet servlet-mapping servlet-nameCounterServlet /servlet-name url-pattern/counter/url-pattern /servlet-mapping 后來通過多方打聽,才知道t
<servlet>
<servlet-name>CounterServlet </servlet-name>
<servlet-class>mypack.CounterServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CounterServlet </servlet-name>
<url-pattern>/counter</url-pattern>
</servlet-mapping>
后來通過多方打聽,才知道tomcat有個調用器(invoker servlet),只要在web.xml中加入以下代碼:
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
便直接用http://localhost:8080/項目目錄名/servlet/servlet名 的方式直接調試,如果項目是root話,其中的項目目錄可省即 http://localhost:8080/servelt/servlet名??晌野瓷鲜龇椒ㄔ趖omcat5中使用總不成功(其它配置均正確),且啟動tomcat的dos窗口出現多行”嚴重”字樣,提示錯在web.xml上,連基本的tomcat默認頁都出錯,把以上servlet-mapping去掉,就沒出現以上問題了。后來仔細查看了網上的帖子,發現網上談調用器的人大都用的是tomcat4,而且也聽說tomcat5相對于tomcat4是有些改變,于是從官方網上下了tomcat4.1.30版,再按上面方法試,居然成了。自然我的上機也就完全改用tomcat4了。由于我裝有win2K+win
XP雙系統,為了了解tomcat5的新功能,在另一系統上也裝有tomcat5,但調試還是用的tomcat4,這個疑問也放下了。
昨才得知tomcat4.1.12之前的版本,默認情況下調用器是啟用的,由于一個
安全缺陷的揭示,因此,此以后的版本,調用器默認情況下是禁用的。如果要啟用的話,需要將conf/web.xml文件中下面的servlet-mapping無素取消注釋。打開相應的web.xml,發現其中真的有
<!-- The mapping for the invoker servlet -->
<!—
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
-->
只不過加了注釋符,禁用了。要解禁,根本不用再加,只用把注釋符去掉就行了(當時咋沒注意呢,呵呵。想當然了,我又查看了一下tomcat5的相應的web.xml,它也有這幾項,被加注釋,相必有這個功能呀!于是切換系統,運行,還是上面的錯誤。哦,對了,在web.xml配置時,講究、對應關系,于時分別查看tomcat4與tomcat5中的項,真的發現了
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>de
bug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
不同之處在于在tomcat5中,以上代碼加了注釋符被禁用了,而tomcat4卻沒有,這就解釋為什么tomcat5總出錯的原因。于是馬上去掉注釋符,再試tomcat5,初始化沒出現“嚴重”字樣,運行也沒問題,又一個疑問解決了。
綜上,在tomcat4中,啟用servlet調用器,只用去掉名為invoker的的注釋符即可;而在tomcat5中,除此之外,你還要去掉同名的的注釋符。
另附:tomcat4最高版4.1.30 , tomcat5最新版5.0.27 均可在tomcat官方地址下載
http:// http://jakarta.apache.org/site/binindex.cgi下載
==================================================
查看tomcat 的release-note( 我用的版本: 5.0.25), 會發現如下一段:
------------------------
Enabling invoker servlet:
------------------------
Starting with Tomcat 4.1.12, the invoker servlet is no longer available by
default in all webapps. Enabling it for all webapps is possible by editing
$CATALINA_HOME/conf/web.xml to uncomment the "/servlet/*" servlet-mapping
definition.
Using the invoker servlet in a production environment is not recommended and
is unsupported.
另外,我在閱讀<core servlet and java server pages: 2nd editon> 時,書中只是在輕描淡寫
的說了一句與 /servlet 映射相關的話。這點,不知難倒過多少英雄!
原文轉自:http://www.anti-gravitydesign.com