分享

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

 后飞的鸟 2010-11-08

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在目录:同上。


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

 

文章出处:飞诺网(www.):http://dev./course/4_webprogram/jsp/jsp_js/2008229/102028.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多