ServletContext
web容器在启动的时候,会为每个web程序创建一个对应的ServletContext对象,它代表了当前的web应用。
web容器:web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器
ServletContext的特性:
- 一 共享数据
A在Servlet中保存的数据,而B可以在Servlet中拿到A保存的数据。
如图所示:
它们每个Servlet都有独立的URL,它们的数据都存放在ServletContext中,所以无论是A存储的数据,还是B存储的数据,它们都可以相互使用。
案例演示:
1.首先创建一个ServletA,在ServletA中创建getServletContext()对象
2.其次创建一个数据,将数据存入ServletContext()中
3.然后再创建一个ServletB,通过ServletB将ServletA存储的数据取出来
4.写完后台之后还要去编写Servlet对应的映射
5.启动项目
启动项目之后,会跳入默认的index.jsp这个页面中
之后输入对应的地址,地址A是将数据存入ServletContext()中,而地址B是去获取地址A的数据的,如果先去访问地址B,就会访问到一个空值(NUll)
所以要先访问A,将数据存入之后在调用B去获取A的数据
- 二 ServletContext获取web应用初始化参数
1.使用ServletContext中的getInitParameter()方法,输入要获取到的数据名称,最后显示在前端页面上
2.配置Servlet对应的映射,以及配置web应用初始化参数
3.配置完成后启动,输入相应的URL就能看到效果
- 三 使用ServletContext实现请求转发
1.使用getRequestDispatcher()转发到指定的URL,然后用forward实现请求转发
2.配置Servlet对应的映射
3.启动项目:输入对应的URL,发现demo2打印的缺是demo1的内容,这就是所谓的请求转发
如图所示:
A想要获取C的数据,但是A拿不到,只能通过B,让B去获取C的数据,B拿到C的数据后再给到A
这样的操作,A就只是面临了B,而没有于C相遇。所以deom2拿到了demo1的数据但是路径(URL)却没有发生改变。
- 四 读取资源文件
1.读取资源文件需要用到Properties,再resources下新建一个Properties文件
2.创建一个新的Servlet,使用getResourceAsStream() 将获取到的资源转换为一个文件流,再将文件流加载到Properties里面,获取到文件流中的属性,最后打印到前端进行展示
3.配置Servlet对应的映射
4.启动项目