猿教程 Logo

ServletContext 接口

ServletContext的对象是在部署项目时由Web容器创建的。 此对象可用于从web.xml文件获取配置信息。 每个Web应用程序只有一个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接口的常用方法

  1. 以下给出了一些常用的ServletContext接口方法。 

  2. public String getInitParameter(String name):返回指定参数名称的参数值。 

  3. public Enumeration getInitParameterNames():返回上下文的初始化参数的名称。 

  4. public void setAttribute(String name,Object object):设置应用程序范围中的给定对象。 

  5. public Object getAttribute(String name):返回指定名称的属性。 

  6. public Enumeration getInitParameterNames():返回上下文初始化参数的名称作为String对象的枚举。

  7. 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-param元素,web应用程序的子元素,用于定义应用程序范围中的初始化参数。 param-name和param-value是上下文参数的子元素。 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>


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/servletcontext.html