欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ServletConfig与ServletContext

程序员文章站 2022-05-08 13:35:53
...

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"));

    }
相关标签: java

上一篇: 18、Static

下一篇: DOS下执行java