- ServletContext接口
- ServletContext接口的用法
- ServletContext接口的方法
- 如何获取ServletContext的对象
- 在Context范围内提供初始化参数的语法
- 获取初始化参数的ServletContext示例
- 获取所有初始化参数的ServletContext示例
【ServletContext接口介绍和示例详解】如果任何信息都共享给许多servlet, 则最好使用< context-param> 元素从web.xml文件中提供信息。
ServletContext的优势
如果任何信息都共享给所有servlet, 则易于维护, 最好使其可用于所有servlet。我们从web.xml文件中提供此信息, 因此, 如果更改了信息, 则无需修改servlet。因此, 它消除了维护问题。
ServletContext接口的用法
ServletContext对象的用法很多。其中一些如下:
- ServletContext的对象提供了容器和Servlet之间的接口。
- ServletContext对象可用于从web.xml文件获取配置信息。
- ServletContext对象可用于设置, 获取或删除web.xml文件中的属性。
- 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上下文中删除具有给定名称的属性。 |
- ServletConfig接口的getServletContext()方法返回ServletContext的对象。
- GenericServlet类的getServletContext()方法返回ServletContext的对象。
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的公共信息。让我们看一个简单的例子: |
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()方法。 |
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>
推荐阅读
- ServletRequest接口介绍和用法详解
- ServletOutputStream类用法示例
- ServletInputStream类用法示例
- uniapp 常用的基础知识
- uniapp 引用 iconfo
- Android_home配置环境变量
- 02-myBatisPlus的wrapper接口的使用
- Android Layout属性
- android-7