读书人

对Servlet的初始化的懂得

发布时间: 2012-09-07 10:38:15 作者: rapoo

对Servlet的初始化的理解

在读我自己的认识之前,我们先来看一下servet的结构图:

对Servlet的初始化的懂得
以下是我自己的一点浅见:

① Servlet在初始化的时候,是通过init(ServletConfig? config)或init()来执行的。

ServletConfig是一个接口,它怎样传递给他一格对象来进行初始化呢?其实,是这个对象是由servlet容器来实例化的,由容器产生一格ServletConfig的实现类的对象,然后传递给Servlet

结论:ServletConfig由容器实例化

② 我们有些时候可能在Servlet初始化时给它一些固定的配置参数,那么这些参数是怎样传递到Servlet呢?

其实,我们在web.xml中给servlet配置启动参数,在容器对servlet进行初始化的时候,会收集你所配置的参数,记录在ServletConfig的实现类中,所以你才可以通过ServletConfig对象的

??? public String getInitParameter(String name);或

??? public Enumeration getInitParameterNames();

方法来取得你已经配置好的参数,也就是说,你对servlet的配置都已经记录在ServletConfig对象中了。

结论:你对Servlet的配置,在Servlet的初始化时都由容器来收集并且记录到ServletConfig的实现类中。

?

③ 我们来看一个Servlet的配置

? <servlet>

??? <servlet-name>index</servlet-name>

??? <servlet-class>org.zy.pro.sw.servlet.IndexServlet</servlet-class>

??? <init-param>

????? <param-name>dbconfig</param-name>

????? <param-value>/WEB-INF/dbconfig.xml</param-value>

??? </init-param>

? </servlet>

在此,我们实现对数据库的配置文件的加载。

当Servlet初始化完成后,我们可以通过

String? dbconf=this.getServletConfig().getInitParameter("dbconfig")

来取得我们的配置的参数的值。

但是,我们仅能得到一个配置的字符串。之后我们可以通过配置文件取得我们的数据库的配置参数,然后对数据库进行初始化。

其实我们也可以通过传递一个类的名字串,然后再实例化。

??? <init-param>

????? <param-name>dbconfig</param-name>

????? <param-value>org.zy.util.db.DBUtil</param-value>

?? ?</init-param>

我们先取得配置参数:

String? dbconf=this.getServletConfig().getInitParameter("dbconfig");

然后通过

Class.forName(dbconf).getInstance();

来实例化对象,就可以实现对数据库的调用了。

结论:在web.xml中对Servlet的初始化,只能传递字符串类型的数据

④ ServletContext

ServletContext是负责和Servlet的上文和下文交互,上面和Servlet容器交互,下面和Servlet中的请求和相应进行交互。

在ServletConfig中,???

public ServletContext getServletContext();方法实现取得当前ServletContext的对象。

你可能要问,ServletContext是一个接口,那么你如何取得他的对象呢?

其实这个问题和ServletConfig相同,都是在Servlet进行初始化的时候产生的对象,是由容器来初始化的。

读书人网 >编程

热点推荐