JSP运行原理
当用户通过URL访问Servlet时,Web服务器会根据请求的URL地址在web.xml配置文件中查找匹配的<servlet-mapping>,然后将请求交给<servlet-mapping>指定的Servlet程序去处理。但是,在例7-1所在的Web工程中,虽然没有在web.xml文件中找到与JSP相关的配置,但Web服务器仍然可以根据URL找到对应的JSP文件。这是因为在Tomcat服务器的web.xml(D:\apache-tomcat-7.0.27\conf\web.xml)文件中实现了JSP的相关配置,具体如下:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
从上面的配置信息可以看出,以.jsp为扩展名的URL访问请求都是由org.apache.jasper.servlet.JspServlet处理,所以,Tomcat中的JSP引擎就是这个Servlet程序,该Servlet程序实现了对所有JSP页面的解析。
需要注意的是,JSP文件也可以像Servlet程序一样,在web.xml文件中进行注册和映射虚拟路径。注册JSP页面的方式与Servlet类似,只需将<servlet-class>元素修改为<jsp-file>元素即可。例如,要映射simple.jsp的虚拟访问路径,需要在web.xml配置中配置如下信息:
<servlet>
<servlet-name>SimpleJspServlet</servlet-name>
<jsp-file>/simple.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>SimpleJspServlet</servlet-name>
<url-pattern>/itcast</url-pattern>
</servlet-mapping>
其中,<jsp-file>元素表示JSP文件,它表示的路径必须以“/”开头,这个“/”表示JSP文件所在的Web应用程序的根目录。重新启动Tomcat,在浏览器地址栏中输入http://localhost:8080/chapter07/itcast
同样能访问到simple.jsp文件,如图1所示。
图1 运行结果