在tomcat中jsp文件的大概执行过程

1.在Tomcat的公共设定中
    <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>
    </servlet-mapping>
可以看出*.jsp文件都是请求org.apache.jasper.servlet.JspServlet得。

2.下面再看看org.apache.jasper.servlet.JspServlet中做什么。
从源代码中可以看出,这个类是继承HttpServlet类,并覆盖了主要方法
public void service (HttpServletRequest request,
        HttpServletResponse response)
 throws ServletException, IOException {
在这个方法中找到jsp文件的路径jspUri,并执行方法serviceJspFile
接着在方法serviceJspFile中我们看到它新创建了一个类JspServletWrapper的实例,并执行了这个类实例的service方法。

3.接下来,我们再看看这个类org.apache.jasper.servlet.JspServletWrapper
在这个类中
我们可以看到在初始化的时候,创建了一个新的对象
      ctxt = new JspCompilationContext(jspUri, tagInfo, options,
      servletContext, this, rctxt,
      tagFileJarUrl);
找到方法
    public void service(HttpServletRequest request,
                        HttpServletResponse response,
                        boolean precompile)
     throws ServletException, IOException, FileNotFoundException
这里,使用了ctxt.compile(),对jsp文件进行了编译,
再调用方法getServlet();给Servlet类型对象theServlet赋值,
最后,调用theServlet的service方法。
由于从jsp转换来的java继承类HttpJspBase,我们可以从类HttpJspBase 中看到servcie方法又调用了_jspService方法,

这样最终调用了由jsp转换来的java中的_jspService方法

我们可以通过在……/jakarta-tomcat-5.0.28/work/Catalina/localhost/bbsSchool(项目名)/org/apache/jsp目录下找到从jsp转换来的java源文件,可以找到_jspService这个方法。

 *******************************

1的文件在目录:…/jakarta-tomcat-5.0.28/conf/web.xml

2中提到的类org.apache.jasper.servlet.jspServlet在目录:…/jakarta-tomcat-5.0.28/common/lib/jasper-compiler.rar里。里面是经过编译的class文件,可以去网上下载。

3中提到org.apache.jasper.servlet.JspServletWrapper在目录:同上。

********************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值