服务器的工作过程:
服务器在第一次启动的时候,会读一个部署描述符文件,也就是.xml文件。这是一个规范,是约定好的。我们在里面写的servlet的配置,里面有servlet的名字。只要读到servelt,服务器就会实例化它们的名字。servlet不再是字符串,而这些实例的键就是url。每一个servlet的url是不同的,但是它们的根localhost:8080是一样的。也就是说,服务器拿地址请求客户端的时候,去掉根的部分就是url。拿url做键,在ServletContext中找到实例,然后运行里边规定的那些方法。这里,实际上调的是service方法。
其实,ServletContext就是servlet的上下文。如果我们自己写一个类,想拿到它的servlet引用,我们即通过的shiServletContext引用拿到的,他就是服务器最大的容器。
双向管理:每一个在ServletContext容器中的servelt也持有这容器的引用。
ServeltContext的实质:
ServletContext在服务器中,实际上是当缓存用的,且这里头不允许用servlet注册servlet。而容器在一启动的时候就存在了,而只要服务器一直不关闭,容器就在。也就是说,它的生命周期就是整个服务器运行的时间,且在会话中它的生命周期最长。
ServletContext容器的特性:
在容器中个,每一个servelt拿着自己的引用,但是它们持有的是同一个servlet运行环境、集合、ServletContext。只要一个servlet存进去,就和session的功能一样,其他的servlet也能拿到容器的引用。而且并不需要同一个会话,即保存同一个id,不同的进程也能访问。
而且ServletContext也可跨域请求。