JSP和Servlet生命周期方法

时间:2013-01-22 17:11:08

标签: java jsp servlets

如果JSP变成Servlet,为什么有不同的生命周期方法,例如jspInit()init()

2 个答案:

答案 0 :(得分:3)

与servlet jspInit方法分离的init的原因之一是实现JSP的servlet(由实现servlet容器的开发人员创建),另一个用于JSP代码(由应用程序开发人员使用)。如果JSP使用init方法,它可以覆盖servlet实现正在做的任何事情。使用单独的方法,JSP实现者可以从jspInit获取代码并将其添加到生成的servlet的init方法中。

答案 1 :(得分:2)

我会尝试以最简单的方式正确解释它(作为正确的@Nathan Hughes答案的补充):

从HTML与JAVA代码的角度来看,servlet更像是用JAVA包装的HTML。它为处理多层架构中的应用层提供了强有力的支持。另一方面,创建JSP以支持表示层的创建。在初始化servlet 期间,只调用一次servlet的init()方法。

所以第一点:Servlets在JSP之前就在这里。

现在来到JSP。再次从HTML和JAVA的角度来看,JSP更像是用HTML包装的JAVA。

WEB CONTAINER 执行JSP“源代码”到等效Servlet java代码的转换。然后编译这个翻译的java Servlet源代码, WEB CONTAINER 处理Servlet的实现。简单地:

MyPage.jsp - > (翻译) - > MyPage_jsp.java - > (编译) - > MyPage_jsp.class - > (加载) - > Java Servlet

作为JSP生命周期的初始化阶段的一部分,WEB容器调用jspInit()方法。

那么问你的问题:jspInit() 不等于 init()