所以,是的,我总结了所有我所理解的并画了一个简单的图表。
如果我没记错的话,servlet 就是 CGI(通用网关接口(interface)),因为 servlet 是您访问服务器资源的唯一途径。因此,简而言之,它是通用网关。
CONTAINER和Apache Tomcat一样,负责捕获用户发送的请求,并发送给servlet。
用户感知到的是一个称为网络应用程序的动态网页。
这是我到目前为止学到的。
我学得对吗?
最佳答案
你几乎是对的。以下是您在使用普通 servlet 时可以遵循的典型工作流程:
Servlet 渲染页面
Servlet 容器找到匹配请求 URL 的 servlet
doGet()
或doPost()
根据请求的 HTTP 方法调用Servlet 做一些处理
响应(HTML、XML、JSON、图像...)直接在 servlet 中生成并使用
getOutputStream()
发送到客户端或getWriter()
PrintWriter out = response.getWriter(); out.println("Hello World");
JSP 处理请求
Servlet 容器找到 JSP 匹配请求。您必须了解,在每个 JSP 的下面都被翻译成一些内部 servlet
此 JSP 已解释。直接发送原始文本,执行scriptlet中的Java代码
JSP结束,请求完成
Servlet 转发给 JSP
同第一个场景1-3
Servlet 选择 JSP 文件并转发到那个 JSP
然后评估 JSP 文件,它可以访问由 servlet 传递的某些上下文(请求属性、 session )
RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher("foo.jsp"); dispatcher.forward(request, response);
最后一个场景被认为是最好的场景,因为它没有混合业务逻辑 (servlet) 和表示 (JSP)。
关于java - 我是否正确理解了 servlet 的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14610226/