Servlet运行原理
Servlet运行原理
比如,在浏览器地址栏输入
http://ip:port/web01/hello
整个通信流程如下图所示: step1.浏览器依据ip,port建立与servlet容器之间的链接
step2.浏览器将请求数据打包(即按照http协议的要求,将相关数据封装成一个数据包,一般称之为请求数据包)并发送给servlet容器
step3.servlet容器解析请求数据包,并将解析之后得到的数据放到request对象上。同时,容器还要创建一个response对象。
step4.servlet容器依据请求资源路径(即/web01/hello)找到servlet配置(toncat看到应用名web01之后,会找webapps下面 的一个文件夹,也叫web01,进去以后有一个web.xml,打开,然后找到一个一个"/hello"的配置 跟<servlet-name>对应,<servlet-name>(如:HelloWorldServlet)又跟<servlet-class>(如:web.HelloWorldServlet)即类名对应,所以容器知道是要处理哪一个类,会调用这个类的构造器去创建servlet对象),然后创建servlet对象。
step5.容器接下来调用servlet对象的service方法,并且会将事先创建好的request对象和response对象作为service方法的
参数传递给servlet对象。
step6.servelt可以通过request对象获得请求参数,进行相应的处理,然后将处理结果写到response对象上。
step7.容器读取response对象上的数据,然后将处理结果打包(响应数据包)并发送给浏览器。
step8.浏览器解析响应数据包,将返回的的数据展现给用户。
这个过程看起来很复杂,但是其实大部分工作浏览器和服务器都帮我们做好了,我们只需要做的是7,8,9那三个步骤。
可以结合下面的代码一起理解
HelloWorldServlet类:
web.xml: