JavaWeb学习笔记(八)--ServletConfig和ServletContext对象介绍

1. ServletConfig对象

在Servlet的配置文件中,可以使用一个或多个<init-param>标签为Servlet配置一些初始化参数。

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

常用API:

String getInitParameter(String name); // 根据初始化参数名获取对应的值

Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数名

1.1 在web.xml中配置初始化参数

<servlet>
        <servlet-name>ServletConfigDemo</servlet-name>
        <servlet-class>com.servlet.ServletConfigDemo</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>schj-bera</param-value>
        </init-param>

        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>

    </servlet>
    <servlet-mapping>
        <servlet-name>ServletConfigDemo</servlet-name>
        <url-pattern>/ServletConfigDemo</url-pattern>
    </servlet-mapping>

1.2 Servlet中获取ServletConfig,进而获取初始化参数

 1 public class ServletConfigDemo extends HttpServlet {
 2 
 3     // 不用再通过下面这种方式获取,因为HttpServlet的父类GenericServlet已经实现了getServletConfig方法来获取,直接调用即可
 4 //    private ServletConfig config;
 5 //
 6 //    @Override
 7 //    public void init(ServletConfig config) throws ServletException {
 8 //        this.config = config;
 9 //    }
10 
11     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
12 
13     }
14 
15     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16         ServletConfig config =  this.getServletConfig();
17         // 根据初始化参数名获取对应的值
18         String username = config.getInitParameter("username");
19         String password = config.getInitParameter("password");
20 
21         OutputStream out =  response.getOutputStream();
22         out.write("Use getInitParameter:\n".getBytes());
23         out.write(("username = " + username + "\n").getBytes());
24         out.write(("password = " + password + "\n\n\n").getBytes());
25 
26         out.write("Use getInitParameterNames: \n".getBytes());
27         // 获取所有的初始化参数名
28         Enumeration<String> dates =  config.getInitParameterNames();
29         while (dates.hasMoreElements()) {
30             String name = dates.nextElement();
31             String value = config.getInitParameter(name);
32             out.write((name + " = " + value).getBytes());
33             out.write("\n".getBytes());
34         }
35     }
36 }

2. ServletContext对象

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

ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写Servlet时,可以通过ServletConfig.getServletContext方法获取到ServletContext对象。

由于一个web应用中的所有Servlet共享一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象

猜你喜欢

转载自www.cnblogs.com/songchj-bear/p/10442970.html