2
我們知道servlet和JSP在後門是一樣的。 JSP也是servlet,所以當JSP執行時,它首先轉換成servlet,然後執行servlet。爲什麼JSP不能在servlet中映射到web.xml中
我的問題是,如果servlet和JSP是相同的,那麼爲什麼我們在web.xml
映射servlet的部署描述符文件,但是我們不映射JSP?
我們知道servlet和JSP在後門是一樣的。 JSP也是servlet,所以當JSP執行時,它首先轉換成servlet,然後執行servlet。爲什麼JSP不能在servlet中映射到web.xml中
我的問題是,如果servlet和JSP是相同的,那麼爲什麼我們在web.xml
映射servlet的部署描述符文件,但是我們不映射JSP?
它已經被映射到服務器自己的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
中。