ServletContext接口介绍和示例详解

  1. ServletContext接口
  2. ServletContext接口的用法
  3. ServletContext接口的方法
  4. 如何获取ServletContext的对象
  5. 在Context范围内提供初始化参数的语法
  6. 获取初始化参数的ServletContext示例
  7. 获取所有初始化参数的ServletContext示例
ServletContext的对象由Web容器在部署项目时创建。该对象可用于从web.xml文件获取配置信息。每个Web应用程序只有一个ServletContext对象。
【ServletContext接口介绍和示例详解】如果任何信息都共享给许多servlet, 则最好使用< context-param> 元素从web.xml文件中提供信息。
ServletContext的优势
如果任何信息都共享给所有servlet, 则易于维护, 最好使其可用于所有servlet。我们从web.xml文件中提供此信息, 因此, 如果更改了信息, 则无需修改servlet。因此, 它消除了维护问题。
ServletContext接口的用法
ServletContext对象的用法很多。其中一些如下:
  1. ServletContext的对象提供了容器和Servlet之间的接口。
  2. ServletContext对象可用于从web.xml文件获取配置信息。
  3. ServletContext对象可用于设置, 获取或删除web.xml文件中的属性。
  4. ServletContext对象可用于提供应用程序间的通信。
ServletContext接口介绍和示例详解

文章图片
ServletContext接口的常用方法
给出了ServletContext接口的一些常用方法。 public String getInitParameter(String name):返回指定参数名称的参数值。 public Enumeration getInitParameterNames():返回上下文的初始化参数的名称。 public void setAttribute(String name, Object object):在应用程序范围内设置给定的对象。 public Object getAttribute(String name):返回指定名称的属性。 public Enumeration getInitParameterNames():将上下文的初始化参数的名称作为String对象的Enumeration返回。 public void removeAttribute(String name):从Servlet上下文中删除具有给定名称的属性。
如何获取ServletContext接口的对象
  1. ServletConfig接口的getServletContext()方法返回ServletContext的对象。
  2. GenericServlet类的getServletContext()方法返回ServletContext的对象。
getServletContext()方法的语法
public ServletContext getServletContext()

getServletContext()方法的示例
//We can get the ServletContext object from ServletConfig object ServletContext application=getServletConfig().getServletContext(); //Another convenient way to get the ServletContext object ServletContext application=getServletContext();

在Context范围内提供初始化参数的语法
web-app的context-param元素(子元素)用于在应用程序范围内定义初始化参数。 param-name和param-value是context-param的子元素。 param-name元素定义参数名称, 而param-value定义其值。
< web-app> ......< context-param> < param-name> parametername< /param-name> < param-value> parametervalue< /param-value> < /context-param> ...... < /web-app>

获取初始化参数的ServletContext示例
在此示例中, 我们从web.xml文件中获取初始化参数, 并打印该初始化参数的值。注意, ServletContext对象代表了应用程序范围。因此, 如果我们从web.xml文件中更改参数的值, 则所有servlet类都将获取更改后的值。因此, 我们不需要修改servlet。因此, 最好通过context-param元素在web.xml文件中具有大多数servlet的公共信息。让我们看一个简单的例子:
DemoServlet.java
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class DemoServlet extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter pw=res.getWriter(); //creating ServletContext object ServletContext context=getServletContext(); //Getting the value of the initialization parameter and printing it String driverName=context.getInitParameter("dname"); pw.println("driver name is="+driverName); pw.close(); }}

web.xml
< web-app> < servlet> < servlet-name> sonoojaiswal< /servlet-name> < servlet-class> DemoServlet< /servlet-class> < /servlet> < context-param> < param-name> dname< /param-name> < param-value> sun.jdbc.odbc.JdbcOdbcDriver< /param-value> < /context-param> < servlet-mapping> < servlet-name> sonoojaiswal< /servlet-name> < url-pattern> /context< /url-pattern> < /servlet-mapping> < /web-app>

获取所有初始化参数的ServletContext示例
在此示例中, 我们从web.xml文件中获取所有初始化参数。为了获取所有参数, 我们在Servlet类中使用了getInitParameterNames()方法。
DemoServlet.java
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class DemoServlet extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out=res.getWriter(); ServletContext context=getServletContext(); Enumeration< String> e=context.getInitParameterNames(); String str=""; while(e.hasMoreElements()){ str=e.nextElement(); out.print("< br> "+context.getInitParameter(str)); } }}

web.xml
< web-app> < servlet> < servlet-name> sonoojaiswal< /servlet-name> < servlet-class> DemoServlet< /servlet-class> < /servlet> < context-param> < param-name> dname< /param-name> < param-value> sun.jdbc.odbc.JdbcOdbcDriver< /param-value> < /context-param> < context-param> < param-name> username< /param-name> < param-value> system< /param-value> < /context-param> < context-param> < param-name> password< /param-name> < param-value> oracle< /param-value> < /context-param> < servlet-mapping> < servlet-name> sonoojaiswal< /servlet-name> < url-pattern> /context< /url-pattern> < /servlet-mapping> < /web-app>

    推荐阅读