JSP是否为Web页面提供动态行为?

时间:2016-08-09 12:53:51

标签: java jsp servlets web-container

虽然我了解JSP(基本理解),但我对JSP技术有些怀疑。

考虑以下简单的jsp:

<html>
    <head>
        <title> This is demo</title>
    </head>
    <body>
        <h1> The current time is <%=new java.util.Date()%> </h1>
    </body>
</html>

关于这一点,我有一些疑问(我一直在脑海中留下):

1)这个jsp的基本文本是一样的,是动态页面,因为它里面有JAVA代码

2)当用户访问此jsp页面时,容器是否首先执行java代码并替换页面内的java代码输出

3)是什么让这个jsp页面?混合html和java代码使它成为jsp?

4)java代码(在&lt; %%&gt;内)是否可以独立于html生存?或者它们是耦合的(java代码必须存在于html页面中)。

他们可能是基本问题,任何人都可以帮助我理解它们吗?

2 个答案:

答案 0 :(得分:1)

1)它是动态的,如果它包含任何JSP元素,如代码片段,JSP标签等。如果它只包含HTML,那么它是非常静态的,尽管如果它作为JSP处理,那么常量响应是动态计算的每次通话(安全缓存)。

2)是的,就像那样。实际上,JSP的静态文本进入了Java类中的out.write()语句;整个JSP被转换为Java类。

3)有趣的问题。这都是解释的问题。如果您将其命名为.jsp或让您的Web容器以其他方式(依赖)将其作为JSP处理,那么您可以将其称为JSP。

4)这个问题不太清楚。在静态文本输出到此时之后执行片段。

答案 1 :(得分:1)

  1. 是的,它是动态的,因为它是在运行时计算的(甚至是部分的) - 这里的java scriptlet是动态部分
  2. 不完全是。 JSP不是模板引擎。 JSP页面完全转换为java源代码,然后由servlet容器编译为类文件。然后这些类在运行时执行。
  3. 扩展名.JSP使其成为JSP文件。然后,它必须遵守servlet容器正确处理的JSP语法。
  4. 反转问题。 Java代码通常位于java源文件中。实现HttpServlet接口的Java类可以通过servlet容器直接映射到URL。 Java代码可以位于JSP
  5. 中的scriptlet中

    但正如你在评论中所说,你真的应该在这里提问之前阅读相关文档。