第一个 JSP 程序

使用 Servlet 我们就可以生成简单的网页了,例如:

  1. package com.skyline;
  2. import javax.servlet.*;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.time.LocalDateTime;
  8. public class MyFirstServlet extends HttpServlet {
  9. protected void doGet(HttpServletRequest request,
  10. HttpServletResponse response)
  11. throws ServletException, IOException {
  12. response.getWriter().write("<html>");
  13. response.getWriter().write("<body>");
  14. response.getWriter().write("<h2>");
  15. response.getWriter().write(LocalDateTime.now().toString());
  16. response.getWriter().write("</h2>");
  17. response.getWriter().write("</body>");
  18. response.getWriter().write("</html>");
  19. }
  20. }

注意我们使用了 HttpServlet 而不是前一个例子中的 Servlet,它是一个更高级的封装类。

可以看到,直接使用 Servlet 生成网页,不仅代码写起来困难,可维护性也不高。为了把 HTML 这些非逻辑的部分抽离出来,人们引入了 JSP 技术。

JSP,全称 JavaServer Pages。可以把 JSP 理解成一种高度抽象的 Servlet。事实上 JSP 在运行期间会被编译成 Servlet,因此 JSP 和 Servlet 可以认为没有本质上的差异,只不过写起来容易了很多。

现在流行的 Web 服务架构往往采用前后端分离的设计,JSP 这种使用后端模板的技术也逐渐被淘汰了。感兴趣的同学可以查阅“前后端分离”有关资料,这里不再赘述。

前面提到的 Tomcat 不仅支持了 Servlet,也支持了 JSP 技术。下面我们使用 JSP 重写上面的程序。

通过前一个例子我们可以看到,现在工程目录下的 WEB-INF 没有实质上的作用,只是为了拷贝到 Tomcat 的部署目录下。因此如果你嫌麻烦,直接在 Tomcat 部署目录下操作也可以。

我们在 WEB-INF 隔壁创建一个 date.jsp 文件:

  1. <%@ page import="java.time.LocalDateTime" %>
  2. <html>
  3. <body>
  4. <h2>
  5. <%
  6. out.write(LocalDateTime.now().toString());
  7. %>
  8. </h2>
  9. </body>
  10. </html>

通过浏览器访问:

result

可以看到效果和使用纯 Servlet 是完全一样的。