版权所有,转载请声明出处 zhyiwww@163.com
在读我自己的认识之前 , 我们先来看一下 servet 的结构图 :
以下是我自己的一点浅见:
① 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 进行初始化的时候产生的对象,是由容器来初始化的。
分享到:
相关推荐
本示例提供了对Servlet初始化参数的演示,帮助开发者了解如何在实际项目中使用它们。 在Servlet中,初始化参数可以通过`web.xml`部署描述符或者使用Java的注解`@WebInitParam`来设置。这里我们主要讨论通过`web.xml...
5. **初始化**:执行Servlet的`init()`方法,这一步可以进行一些初始化操作,如加载配置信息。 6. **请求处理**:调用Servlet的`service()`方法来处理请求。对于HTTP Servlet,实际调用的是`doGet()`或`doPost()`,...
当Web应用启动时,`ActionServlet`作为Servlet初始化并存入Tomcat容器中。这一过程发生在Struts首次被使用时。`ActionServlet`在初始化过程中主要负责配置和管理整个Struts应用的环境,包括但不限于配置文件的加载、...
`init()`方法在Servlet实例化后首次调用,用于初始化Servlet;`service()`方法处理每个到来的请求;而`destroy()`方法在Servlet不再使用时调用,用于释放资源。 接下来,我们探讨Servlet容器模型。Servlet容器,如...
4. **ServletConfig接口**:在Servlet初始化时,Servlet容器会传递一个ServletConfig对象给Servlet,这个对象包含了Servlet的配置信息,如Servlet名称、初始化参数等。 5. **ServletContext接口**:表示整个Web应用...
2.初始化阶段:在这个阶段,SERVLET 容器会调用 SERVLET 的 init() 方法,以完成 SERVLET 的初始化工作。 3.服务阶段:在这个阶段,SERVLET 容器会将用户的请求传递给 SERVLET,并调用 SERVLET 的 service() 方法,...
9. **监听器(Listeners)**: Servlet API包含各种监听器接口,如ServletContextListener、ServletRequestListener、HttpSessionListener等,可以监听特定的事件,比如Web应用启动、Servlet初始化、用户会话创建等。...
- 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求,都会调用`service()`方法来处理请求和响应。 - 销毁:当Servlet不再使用或者Web应用停止...
1. 初始化:Servlet 初始化时,会读取 web.xml 文件中的配置信息,并执行 init 方法。在这个阶段,Servlet 会获取 web.xml 文件中的预定义参数。 2. 服务:在 Servlet 初始化完成后,会进入服务阶段。在这个阶段,...
2. **ServletConfig接口**:提供了获取Servlet初始化参数的方法,通常在`init()`方法中使用。 - `String getInitParameter(String paraName)`:获取指定名称的初始化参数值。 3. **GenericServlet抽象类**:实现了...
4. **ServletConfig接口**:在Servlet初始化时,容器会传递一个ServletConfig对象,包含了Servlet的初始化参数和容器特定的信息。 5. **ServletContext接口**:代表了Servlet的运行时环境,提供了获取整个Web应用的...
3. 理解Servlet的生命周期,模拟Servlet的初始化和销毁过程。 4. 配置Servlet,尝试不同的URL映射,理解其工作原理。 总之,Servlet是Java Web开发的基础,熟练掌握Servlet能够帮助开发者更好地理解和构建动态Web...
接着,调用Servlet的init()方法进行初始化,我们可以在这里配置Servlet的初始化参数。在服务阶段,每次请求都会调用service()方法,该方法会根据请求类型选择合适的doGet()或doPost()进行处理。最后,当服务器关闭或...
标签"Servlet源码"和"javax.servlet.Servlet源码"强调了对Servlet API源代码的学习和理解。掌握源码可以帮助开发者更好地运用Servlet,解决实际问题。而"Servlet-api-src"则表明这是一个关于Servlet API源代码的资源...
1. `void init(ServletConfig config) throws ServletException`:这是Servlet的初始化方法,当Servlet容器(如Tomcat)加载Servlet时调用。ServletConfig对象在此方法中传递,包含了Servlet的配置信息,如初始化...
例如,可以在web.xml中配置Servlet的初始化参数和初始化顺序。以下是一个简单的示例: ```xml <servlet> <servlet-name>LifeCycleServlet</servlet-name> <servlet-class>...
1. `javax.servlet.Servlet`:这是所有Servlet类的基类,定义了Servlet的基本行为,如初始化、服务和销毁。 2. `javax.servlet.http.HttpServlet`:HttpServlet是Servlet的一个子接口,专门用于处理HTTP请求,提供了...
一旦Servlet初始化完成,它就可以开始处理客户端请求。 **1. 创建请求与响应对象** - 当客户端请求到达时,Servlet容器会创建`ServletRequest`和`ServletResponse`对象。 - 随后调用Servlet的`service()`方法,并...
在Web应用的`web.xml`配置文件中,可以声明Servlet,指定Servlet类、URL映射、初始化参数等。例如: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-...