ServletContext和ServletConfig详解

      ServletContext是Servlet容器上下文环境对象,定义一组方法,servlet 使用这些方法与其 servlet 容器进行通信,例如,获取文件的 MIME 类型、分发请求或写入日志文件。每个web应用都有且仅有一个ServletContext对象,这个对象在所有的Servlet都可以使用。
      ServletContext 对象包含在ServletConfig 对象中,ServletConfig 对象在初始化Servlet 时由Web 服务器提供给Servlet。ServletContext在jsp中用application内置对象来表示,而在Servlet中通过调用方法 ServletContext sc = getServletContext(); 来获取。
      
 
一、java中获取ServletContext常见方法

   1. 在javax.servlet.Filter中直接获取

      ServletContext context = config.getServletContext();

   2. 在HttpServlet中直接获取

      this.getServletContext()

   3. 在其他方法中,通过HttpRequest获得

      request.getSession().getServletContext();

   4. struts2中还有常见的两种方法获得

 HttpServletRequest request = ServletActionContext.getRequest();
 ServletContext servletContext = ServletActionContext.getServletContext();
 request.getSession();
 HttpServletResponse response = ServletActionContext.getResponse();

   5. 实现指定接口,由struts框架运行时注入

public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{
    private HttpServletRequest request;
    private ServletContext servletContext;
    private HttpServletResponse response;
    public void setServletRequest(HttpServletRequest req) {
        this.request=req;
    }
    public void setServletResponse(HttpServletResponse res) {
       this.response=res;
    }
    public void setServletContext(ServletContext ser) {
        this.servletContext=ser;
    }
}

 

二、ServletConfig对象

    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下)

    当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

this.getInitParameter("unicode");
this.getServletConfig().getInitParameter("unicode");

      具体用法参照:http://www.cnblogs.com/NicholasLee/archive/2012/07/08/2581540.html

三、ServletContext对象

     WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

     ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

this.getServletContext().getInitParameter("globalUnicode");
this.getServletConfig().getServletContext().getInitParameter("globalUnicode");

 

转载于:https://www.cnblogs.com/NicholasLee/archive/2012/07/08/2581633.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值