所以,是的,我总结了所有我理解的东西,并绘制了一个简单的图表。
如果我没有错,那么servlet就是CGI(通用网关接口),因为servlet是唯一可以访问服务器资源的方式。简而言之,它就是COMMON GATEWAY。
与Apache Tomcat一样,CONTAINER负责捕获用户发送的请求并将其发送到servlet。
用户感知的是名为网络应用的动态网页。
这是我到目前为止所学到的。
我是否正确学习了它?
答案 0 :(得分:4)
你几乎是对的。以下是使用普通servlet时可以遵循的典型工作流程:
Servlet容器查找与请求URL匹配的servlet
doGet()
或doPost()
Servlet进行一些处理
响应(HTML,XML,JSON,image ...)直接在servlet中生成,并使用getOutputStream()
或getWriter()
PrintWriter out = response.getWriter();
out.println("Hello World");
Servlet容器查找JSP匹配请求。您必须了解每个JSP下面都会转换为某个内部servlet
解释此JSP。原始文本直接发送,scriptlet中的Java代码执行
JSP结束,请求已完成
与第一个场景中的1-3相同
Servlet选择JSP文件,转发到该JSP
然后评估JSP文件,它可以访问servlet传递的一些上下文(请求属性,会话)
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("foo.jsp");
dispatcher.forward(request, response);
最后一个场景被认为是最好的场景,因为它不会混淆业务逻辑(servlet)和表示(JSP)。
答案 1 :(得分:1)
Servlet处理请求并生成响应。
JSP被编译成servlet,因此JSP是servlet的子集。
查找正确的JSP不是Servlet,这是容器的工作。