CodeGym/Java 课程/模块 3/JSP:定义 servlet 的声明方式

JSP:定义 servlet 的声明方式

可用

1.1 JSP介绍

有两种流行的编写 servlet 的方法:命令式声明式。我们已经处理了第一个 - 实际上,这是一个 Servlet。第二种称为 JSP(Java 服务器页面),我们现在将熟悉它。

Servlet JSP 示例:

<html>
    <body>
        <% out.print(2*5); %>
    </body>
 </html>

不是很像我们习惯的经典Servlet吧?这是真实的。JSP 是一个带有 Java 代码插入(以绿色突出显示)的 HTML 页面

你看,如果在 servlet 中有很多 Java 代码而 HTML 代码很少,那么使用经典的 servlet 会更舒服。但是,如果您需要一个大型 HTML 页面,其中只有几行被服务器更改怎么办?

在这种情况下,最简单的事情就是创建这个 HTML 页面并以某种方式在服务器上执行 Java 代码。

1.2 编译 JSP

让我们看另一个例子:

<html>
  <body>
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
        }
    %>
  </body>
</html>

我们得到一个随机数,如果它大于 0.95,我们打印文本“你很幸运,用户!”

Java 代码在这里以蓝色突出显示。正常(未突出显示)- HTML 代码,以及红色 - 服务标签,有助于理解 Java 代码在哪里以及 HTML 在哪里。

你注意到一些奇怪的事情吗?右花括号"}"在另一个"code block". 编写此类代码的正确方法是什么?它是如何工作的?

答案将非常简单:)

Web 服务器在找到 JSP 文件后,将其编译成经典的 servlet。基于上面的JSP页面,会生成这个Servlet:

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html> ");
    out.print("<body>");
        double num = Math.random();
        if (num > 0.95) {
            out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>");
    out.print("</html>");
    }
}

Web 容器刚刚生成了 servlet 代码,其中 HTML 变成了文本,Java 代码插入变成了常规的 Java 代码!

评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论