标签:Engine 请求 Tomcat 流程 HttpServletResponse Host jsp chen 原理
相信大家在做JavaWeb项目的时候,都会用到这个服务器,有部分人和我一样,就是会使用,会配置,但是对于其具体是如何工作的还是不够了解,所以接下来就一起看看吧! 看完你就会明白了
首先假设一个请求:
http://localhost:8080/chen/index.jsp
1请求被发送到8080端口,被对应的Connector侦听到该请求。并将获得的请求发送给Engine来处理,并等待来自Engine的回应并返回给客户
2Engine从Connector那里获得该对应的请求localhost:8080/chen/index.jsp,并进行匹配该对应的虚拟主机Host(其Engine中,可以配置多个虚拟主机)
3Engine匹配到名为localhost的Host(一般localhost为默认主机)
4localhost Host获得请求chen/index.jsp并匹配其所拥有的的Context(一个Context对应一个Web应用,一个Web应用由一个或者多个Servlet组成
)如下,是Tomcat中的web.xml配置,对于一个web应用,其默认自开启了JspServlet,还有ssi,cgi等Servlet
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<!-- The mapping for the SSI servlet -->
<!--
<servlet-mapping>
<servlet-name>ssi</servlet-name>
<url-pattern>*.shtml</url-pattern>
</servlet-mapping>
-->
<!-- The mapping for the CGI Gateway servlet -->
<!--
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
-->
5匹配到路径为path="/chen"的Context,并获得请求/chen/index.jsp,并在其mapping table中寻找对应的Servlet,Context匹配到URL PATTERN后缀名为.jsp的Servlet,对应于JSPServlet类*
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
6构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
7Context将执行完毕之后的HttpServletResponse对象返回给Host
8Host将HttpServletResponse对象返回给Engine
9Engine将HttpServletResponse对象返回给Connector
10Connector将HttpServletResponse对象返回给客户浏览器
标签:Engine,请求,Tomcat,流程,HttpServletResponse,Host,jsp,chen,原理 来源: https://blog.csdn.net/m0_37510446/article/details/90177717
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。