第一个 JSP 程序

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

package com.skyline;

import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;

public class MyFirstServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException {

        response.getWriter().write("<html>");
        response.getWriter().write("<body>");
        response.getWriter().write("<h2>");
        response.getWriter().write(LocalDateTime.now().toString());
        response.getWriter().write("</h2>");
        response.getWriter().write("</body>");
        response.getWriter().write("</html>");
    }
}

注意我们使用了 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 文件:

<%@ page import="java.time.LocalDateTime" %>
<html>
<body>
<h2>
<%
out.write(LocalDateTime.now().toString());
%>
</h2>
</body>
</html>

通过浏览器访问:

result

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

results matching ""

    No results matching ""