servlet 的调用过程
1、浏览器地址栏输入一个地址会发送http请求到服务器。
2、在服务器端收到请求后通过DNS解析器解析域名成为IP地址,找到对应的服务器。
3、然后在请求头Host中确定请求的是当前虚拟主机。
4、通过请求资源路径确定请求的是当前的web应用的当前web资源。
5、再通过web.xml配置文件中的<servlet>标签,<servlet-mapping>标签下的<url-pattern>标签,找到对应<servlet-name>一致的<servlet-class>标签中的路径,即可锁定具体的servlet。
6、如果是首次访问当前servlet,则会调用init()方法先实例化,然后服务器会创建出HttpServletRequest和HttpServletResponse对象,并将两个对象当做参数传入调用的service()方法,service方法中会根据请求的具体内容将响应内容写入响应对象,响应对象会作为返回值返回给服务器。
7、服务器获取到响应对象身上的实体内容之后会将这些数据组织成一定的数据结构,通过response缓冲区发送http响应给客户端。
2、在服务器端收到请求后通过DNS解析器解析域名成为IP地址,找到对应的服务器。
3、然后在请求头Host中确定请求的是当前虚拟主机。
4、通过请求资源路径确定请求的是当前的web应用的当前web资源。
5、再通过web.xml配置文件中的<servlet>标签,<servlet-mapping>标签下的<url-pattern>标签,找到对应<servlet-name>一致的<servlet-class>标签中的路径,即可锁定具体的servlet。
6、如果是首次访问当前servlet,则会调用init()方法先实例化,然后服务器会创建出HttpServletRequest和HttpServletResponse对象,并将两个对象当做参数传入调用的service()方法,service方法中会根据请求的具体内容将响应内容写入响应对象,响应对象会作为返回值返回给服务器。
7、服务器获取到响应对象身上的实体内容之后会将这些数据组织成一定的数据结构,通过response缓冲区发送http响应给客户端。
另外,Http Servlet Request和Http Servlet Response是接口,为什么可以创建对象?
答:因为这两个接口下面还有各自的子实现类,Http Servlet Request Wrapper和Http Servlet Response Wrapper,这两个子实现类才是真正创建对象的类,而不是直接通过接口创建的对象。
图示如下: