2015-11-04 71 views
2

我們知道servlet和JSP在後門是一樣的。 JSP也是servlet,所以當JSP執行時,它首先轉換成servlet,然後執行servlet。爲什麼JSP不能在servlet中映射到web.xml中

我的問題是,如果servlet和JSP是相同的,那麼爲什麼我們在web.xml映射servlet的部署描述符文件,但是我們不映射JSP?

回答

4

它已經被映射到服務器自己的web.xml中,它被應用到所有的webapps上。所以你不需要在所有的web應用程序中明確地註冊它。

例如, Tomcat,您可以在Tomcat安裝的/conf/web.xml文件中找到下面的JSP servlet相關條目(行號下面的代碼匹配Tomcat 8.0.26)。

245 <servlet> 
255  <servlet-name>jsp</servlet-name> 
256  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
257  <init-param> 
258   <param-name>fork</param-name> 
259   <param-value>false</param-value> 
260  </init-param> 
261  <init-param> 
262   <param-name>xpoweredBy</param-name> 
263   <param-value>false</param-value> 
264  </init-param> 
265  <load-on-startup>3</load-on-startup> 
266 </servlet> 
381 <servlet-mapping> 
382  <servlet-name>jsp</servlet-name> 
383  <url-pattern>*.jsp</url-pattern> 
384  <url-pattern>*.jspx</url-pattern> 
385 </servlet-mapping> 

你看,它的URL模式*.jsp*.jspx將調用服務器自身JspServlet然後將完成所有的工作JSP匹配的任何請求。

Tomcat對您的「自定義」servlet沒有任何瞭解,因此您無法在其中找到您的「自定義」servlet,並且您需要自己將它們映射到webapp自己的web.xml中。

相關問題