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

时间:2013-01-30 17:37:06

标签: java jsp servlets

enter image description here

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

如果我没有错,那么servlet就是CGI(通用网关接口),因为servlet是唯一可以访问服务器资源的方式。简而言之,它就是COMMON GATEWAY。

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

用户感知的是名为网络应用的动态网页。

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

我是否正确学习了它?

2 个答案:

答案 0 :(得分:4)

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

Servlet呈现页面

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

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

  4. Servlet进行一些处理

  5. 响应(HTML,XML,JSON,image ...)直接在servlet中生成,并使用getOutputStream()getWriter()

    发送给客户端
    PrintWriter out = response.getWriter();
    out.println("Hello World");
    
  6. JSP处理请求

    1. Servlet容器查找JSP匹配请求。您必须了解每个JSP下面都会转换为某个内部servlet

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

    3. JSP结束,请求已完成

    4. Servlet转发到JSP

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

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

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

        RequestDispatcher dispatcher = getServletContext()
         .getRequestDispatcher("foo.jsp");
        dispatcher.forward(request, response);
        
      4. 最后一个场景被认为是最好的场景,因为它不会混淆业务逻辑(servlet)和表示(JSP)。

答案 1 :(得分:1)

Servlet处理请求并生成响应。

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

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