ServletContext总结
1)在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。
2) 当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
3)阅读ServletConfig API,并举例说明该对象的作用:
获得字符集编码
获得数据库连接信息
获得配置文件,查看struts案例的web.xml文件
ServletContext
1) WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
2) ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
3) 由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
4) 查看ServletContext API文档,了解ServletContext对象的功能。
ServletContext应用
1) 多个Servlet通过ServletContext对象实现数据共享。
2) 获取WEB应用的初始化参数。
3) 实现Servlet的转发。
4) 利用ServletContext对象读取资源文件。
a) 得到文件路径
b) 读取资源文件的三种方式
c) .properties文件(属性文件)
实现Servlet的转发。
在测试的Servlet中实现转发的步骤如下:
/*要利用ServletContext对象实现转发获取对象*/
ServletContext context = this.getServletContext();
//在request对象中存入name属性
request.setAttribute("name", "redarmy");
/*根据转发的地址获取 RequestDispatcher对象*/
RequestDispatcher rd = context.getRequestDispatcher("/index.jsp");
//调用转发方法 以下采用任意方法即可
5) rd.forward(request, response);
6) //rd.include(request, response);
注意:forward与include的区别
forward方法调用后在响应中的没有提交的内容被自动消除。将请求转发给其他的Servlet后,由被调用的Servlet负责对请求做出响应,而原先Servlet的执行则终止。
include方法使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息