2015-11-04 208 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中。

相关问题