java - 我是否正确理解了 servlet 的工作?

标签 java jsp servlets

enter image description here

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

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

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

用户感知到的是一个称为网络应用程序的动态网页。

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

我学得对吗?

最佳答案

你几乎是对的。以下是您在使用普通 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 传递的某些上下文(请求属性、 session )

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

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

关于java - 我是否正确理解了 servlet 的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14610226/

相关文章:

java - 将 jar 文件导入 IntelliJ Idea?

java - 线程从 Servlet 开始——这总是坏主意吗?

servlets - 修改 servlet 上下文初始化参数(<context-param>) 值

java - 如何对 java 日志条目进行分组?

java - 如何从azure keyvault获取证书链

java - 自定义 Javascript 组件 : Using @StyleSheet produces script error in IE8

java - 从 Java 客户端发送的 servlet 中读取 File、String、Int

java - 是否有任何用 Java 编写的正则表达式优化器?

java - ModelMap/ModelAndView数据不显示

java - 单击按钮时,在 JSP 上显示 'Please wait' 警报。当 servlet 上的处理完成时,删除警报