3

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

4

2 回答 2

3

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

于 2013-01-22T17:26:38.063 回答
2

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

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

所以第一点:Servlet 在 JSP 之前就已经出现了。

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

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

MyPage.jsp --> (translate) --> MyPage_jsp.java --> (compile) --> MyPage_jsp.class --> (load) --> Java Servlet

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

所以对你的问题:jspInit() 不等于 init()

于 2013-01-22T18:00:08.910 回答