Tomcat怎么处理JSP页面

所有扩展名为jsp的URL都会交由JSPServlet类处理,也就是交由Servlet引擎进行处理。而未定义的其他扩展名的URL所指的Web资源就直接由Tomcat按原样返回给客户端(实际上,也是通过Tomcat自带的一个DefaultServlet类来处理的)。如果不将html映射成JSP的扩展名,那么扩展名为html的URL就会被交给DefaultSerlvlet类来处理。因此,html也就变成了静态的Web资源了。

JSP引擎分两步JSP页面进行处理。首先将JSP页面生成一个Servlet源程序文件,然后再调用java编译器将这个Servlet源程序文件编译成.class文件,并由Servlet引擎来装载并执行这个.class文件。如果在IE地址栏中输入如下的URL,servertime.jsp页面就会生成两个文件:servertime_jsp.java和servertime_jsp.class。

为了提高JSP的执行效率,并不是每次访问JSP时都进行翻译。只有在第一次访问JSP页面时才会执行这个翻译过程。当再次访问这个JSP页面时,Servlet引擎会将茶JSP页面是否被更新,如果已经被更新,会再次翻译这个JSP页面,然后执行它。如果未被更新,Servlet引擎会直接装载并执行由这个SJP页面翻译生成的.class文件。、

也就是说,JSP页面只有在第一次被访问时才被翻译成.class文件,对于该JSP页面的后续访问,除非这个JSP页面被修改,否则Web容器将直接调用被翻译好的.class文件。因此,JSP页面从运行原理上看就是在运行Servlet程序。所以习惯上将同时执行JSP和Servlet的程序成为Servlet容器,而不是分别叫JSP容器和Servlet容器。

由于JSP在第一次访问是要经过JSP引擎翻译成Servlet才能运行。因此,在第一次访问JSP页面是比较慢。在Tomcat的文档中提供了一种通过ant将JSP页面翻译成.class文件再发布的方法,通过这种方法就可以有效地解决这个问题。

l JSP生成Servlet代码

1, 所有的JSP页面生成的Servlet类的类名由JSP文件名加上“_jsp”组成,如果random_jsp。

2, JSP静态部分的转换

JSP的静态部分就是在客户端运行的代码,如:HTML,JavaScript等。在random.jsp中除了用<%...%>括起来的内容 (包括<%=…%>和<@page…%>)外,其他的部分都属于静态部分,这个静态的内容在转换时都作为字符串,并通过write方法按原样输出到客户端。

3, JSP动态部分的转换

i. <%...%>形式:JSP引擎如果遇到这种形式,就将<%...%>中的内容按原样插入由JSP生成的Servlet源代码中。

ii. <=%...%>形式:JSP引擎遇到这种形式,并不是把其中的内容直接放到Serclet源程序中,而是通过print方法将”=”后面的内容输出到客户端。

iii. JSP指令:%@page...%就是一个JSP的page指令。对于这中形式,JSP引擎按照指令类型和它的属性翻译成相应的Java代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值