ServletConfig类是Servlet程序的配置信息类
三大作用
1.可以获取Servlet程序的别名servlet-name的值
2.获取初始化参数init-param
3.获取ServletContext对象
servletConfig.getServletName();
servletConfig.getInitParameter();
servletConfig.getServletContext();
这些获取的值只有init()的传入的参数才能获取
在其他方法中可以通过getServletConfig()获取ServletConfig
ServletConfig只能获取自己Servlet中的配置信息 不能获取别人的
ServletConfig是由Tomcat负责创建,我们负责使用
Servlet程序默认是第一次访问的时候创建
ServletConfig是每个Servlet程序创建时就创建一个对应的ServletConfig对象。
当自己重写init()时 servletConfig对象中将不再有以上方法 除非调用父方法
//super(config);这样调用父方法
//父类init()保存了一个修改完的config 只有执行父类init() 才能获得有这些功能的config
ServletContext
1.是一个接口 表示Servlet上下文对象
2.一个web工程只有一个ServletContext对象实例
3.ServletContext对象是一个域对象(可以像Map一样存取数据的对象 叫做域对象 这里的域指存取数据的操作范围)
4.ServletContext web工程部署启动时创建 web工程停止的时候销毁
工程一直都在的情况下 ServletContext 存储的数据可以被所有拥有ServletContext 对象的部分都能获得ServletContext 所存储的数据
//域指的是存取数据的操作范围 即整个web工程
增 查 删
Map put() get() remove()
域对象 setAttribute() getAttibute() removeAttribute()
ServletContext类的四个常见作用
1.获取web.xml中获取的上下文参数context-param(属于整个web工程)
2.获取当前工程路径,格式:/工程路径
3.获取工程部署后在服务器磁盘上的绝对路径
public class ContextServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取web.xml中获取的上下文参数context-param
ServletContext servletContext = getServletConfig().getServletContext();
String username = servletContext.getInitParameter("username");
System.out.println("username的值是:"+username);
// 2.获取当前工程路径,格式:/工程路径
String contextPath = servletContext.getContextPath();
System.out.println("contextPath是:"+contextPath);
// 3.获取工程部署后在服务器磁盘上的绝对路径
// "/"被服务器解析为http://ip:port/工程名/ 映射到idea代码的web目录
System.out.println("工程获取路径是:"+servletContext.getRealPath("/"));
}
}
servletContext像map一样存取数据
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取servletContext对象
ServletContext servletContext = getServletContext();
servletContext.setAttribute("k1","v1");
System.out.println("servletContext中域数据 k1对应的值是"+servletContext.getAttribute("k1"));
}