一、ServletConfig对象
加载配置:加载时机在servlet对象创建之后,init方法调用之前;
public void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
}
从这段代码可以看出,会在init方法调用之前初始化ServletConfig对象;
ServletConfig对象的作用:
初始化配置变量:如在web.xml中可以为某个servlet配置变量,在servlet中通过该对象取出对应的变量,实际上变量封装进了这个ServletConfig对象;
下面是在web.xml中设置变量,对于可能修改的变量,这样设置值可以避免源代码的修改;
<servlet>
<servlet-name>bb</servlet-name>
<servlet-class>p01.ThridServlet</servlet-class>
<!-- 这些参数会在加载web应用的过程中封装到config对象 -->
<init-param>
<param-name>path</param-name>
<param-value>E:/test.txt</param-value>
</init-param>
</servlet>
在servlet中取出变量:
String path = this.getServletConfig().getInitParameter("path");
Enumeration<String> en = this.getServletConfig().getInitParameterNames();
while(en.hasMoreElements()){
String name = en.nextElement();
String value = this.getServletConfig().getInitParameter(name);
System.out.println(name+"---"+value);
}
下面这是遍历所有参数的代码;
三个核心方法:一个获取配置对象,另两个分别是获取所有的名字和根据变量名字获取变量值;
二、ServletContext对象
域对象,用于在servlet之间共享数据
代码:
ServletContext context = this.getServletContext();
System.out.println("路径:"+ context.getContextPath());//获取路径
Enumeration<String> enum1 = context.getInitParameterNames();//获取参数名字
while(enum1.hasMoreElements()){
String str1 = enum1.nextElement();
System.out.println(context.getInitParameter( str1));//获取参数值
}
System.out.println("path:"+context.getRealPath("index.jsp"));//获取资源文件
输出:
路径:/day11_会话管理
123456
path:D:\tomcat\apache-tomcat-6.0.39\webapps\day11_会话管理\index.jsp
context.getAttribute() //获取属性值,用于在servlet之间共享属性值
removeAttribute() //移除属性值