4

在此处输入图像描述

所以,是的,我总结了我所理解的所有内容并绘制了一个简单的图表。

如果我没记错的话,servlet 就是 CGI(通用网关接口),因为 servlet 是您可以访问服务器上资源的唯一途径。所以,简而言之,它是通用网关。

CONTAINER 和 Apache Tomcat 一样,负责捕获用户发送的请求并将其发送给 servlet。

用户感知到的是一个动态网页,称为 web app。

这是我到目前为止所学到的。

我学对了吗?

4

2 回答 2

4

你几乎是对的。以下是使用普通 servlet 时可以遵循的典型工作流程:

Servlet 呈现页面

  1. Servlet 容器查找匹配请求 URL 的 servlet

  2. doGet()doPost()根据请求的 HTTP 方法调用

  3. Servlet 做一些处理

  4. 响应(HTML、XML、JSON、图像...)直接在 servlet 中生成并使用getOutputStream()或发送到客户端getWriter()

    PrintWriter out = response.getWriter();
    out.println("Hello World");
    

JSP 处理请求

  1. Servlet 容器找到 JSP 匹配请求。你必须明白,在每个 JSP 之下都被翻译成一些内部 servlet

  2. 该 JSP 被解释。直接发送原始文本,执行 scriptlet 中的 Java 代码

  3. JSP结束,请求完成

Servlet 转发到 JSP

  1. 与第一个场景中的 1-3 相同

  2. Servlet 选择 JSP 文件并转发到该 JSP

  3. 然后评估 JSP 文件,它可以访问由 servlet 传递的某些上下文(请求属性、会话)

    RequestDispatcher dispatcher = getServletContext()
     .getRequestDispatcher("foo.jsp");
    dispatcher.forward(request, response);
    

最后一种方案被认为是最好的方案,因为它没有混合业务逻辑(servlet)和表示(JSP)。

于 2013-01-30T17:46:00.407 回答
1

Servlet 处理请求并生成响应。

JSP 被编译成 servlet,因此 JSP 是 servlet 的子集。

寻找正确 JSP 的不是 Servlet,这是容器的工作。

于 2013-01-30T17:44:07.350 回答