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 代码!
GO TO FULL VERSION