Servlet ServletContext接口,在上一篇教程中,我们讨论了ServletConfig,Servlet 容器在初始化期间为每个 Servlet 创建ServletConfig
对象。ServletConfig
和ServletContext
之间的主要区别在于,与ServletConfig
不同,ServletContext
每个 Web 应用创建一次,即ServletContext
对象对 Web 应用中的所有 servlet 都是通用的。
这就是我们如何创建ServletContext
对象。在这段代码中,我们在init()
方法中创建对象,但是您可以在任何地方创建对象。
ServletContext sc;
public void init(ServletConfig scfg)
{
sc=scfg.getServletContext();
}
一旦我们有ServletContext
对象,我们就可以使用setAttribute()
方法设置ServletContext
对象的属性。由于ServletContext
对象可用于 Web 应用的所有 servlet,因此其他 servlet 可以使用getAttribute()
方法从ServletContext
对象中检索该属性。
上下文初始化参数
上下文初始化参数是您可以在部署描述符文件(web.xml
文件)中指定的参数名称和值对。您可以在此处指定 Web 应用中所有 servlet 都可访问的参数。
当我们部署 Web 应用时,Servlet 容器从web.xml
文件中读取初始化参数,并使用它初始化ServletContext
对象。我们可以使用ServletContext
接口的getInitParameter()
和getInitParameterNames()
方法分别获取参数名称的参数值和枚举。
例如,这里我已经使用值指定了参数email_id
,因为这对所有 servlet 都是通用的,您可以在任何 servlet 中获取参数名称和值。
<context-param>
<param-name>email_id</param-name>
<param-value>[email protected]</param-value>
</context-param>
获取初始化参数
在此示例中,我们在web.xml
文件中有两个上下文初始化参数(用户名和用户电子邮件),我们使用getInitParameter()
方法获取 Servlet 中的值,该方法返回给定参数的值。
DemoServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DemoServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter pwriter=response.getWriter();
//ServletContext object creation
ServletContext scontext=getServletContext();
//fetching values of initialization parameters and printing it
String userName=scontext.getInitParameter("uname");
pwriter.println("User name is="+userName);
String userEmail=scontext.getInitParameter("email");
pwriter.println("Email Id is="+userEmail);
pwriter.close();
}
}
web.xml
<web-app>
<servlet>
<servlet-name>BeginnersBook</servlet-name>
<servlet-class>DemoServlet</servlet-class>
</servlet>
<context-param>
<param-name>uname</param-name>
<param-value>ChaitanyaSingh</param-value>
</context-param>
<context-param>
<param-name>email</param-name>
<param-value>[email protected]</param-value>
</context-param>
<servlet-mapping>
<servlet-name>BeginnersBook</servlet-name>
<url-pattern>/context</url-pattern>
</servlet-mapping>
</web-app>
输出:
ServletContext
接口的方法
以下是ServletContext
接口常用方法的列表。
public String getInitParameter(String param)
:返回给定参数的值,如果参数不存在,则返回null
。
public Enumeration getInitParameterNames()
:返回上下文参数名称的枚举。
public void setAttribute(String name,Object object)
:设置给定属性名称的属性值。
public Object getAttribute(String name)
:返回给定名称的属性值,如果该属性不存在,则返回null
。
public String getServerInfo()
:返回运行 servlet 的 servlet 容器的名称和版本。
public String getContextPath()
:返回 Web 应用的上下文路径。