我看书上说:Servlet只会初始化一次,在初始化的时候容器为servlet建立了ServletConfig和ServletContext。容器去web.xml中读取初始化参数,将初始化参数传递给ServletConfig和ServletContext,然后再将ServletConfig和ServletContext传递给servlet的init()方法。
假如现在有一个email项目,然后里面有一个WEB-INF/web.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>email</servlet-name>
<servlet-class>Email</servlet-class>
<init-param>
<param-name>myEmail</param-name>
<param-value>Emi.wan@xxx.com</param-value>
</init-param>
<init-param>
<param-name>adminEmail</param-name>
<param-value>Admin@xxx.com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>email</servlet-name>
<url-pattern>/email.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>managerEmail</param-name>
<param-value>David.tang@xxx.com</param-value>
</context-param>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>email</servlet-name>
<servlet-class>Email</servlet-class>
<init-param>
<param-name>myEmail</param-name>
<param-value>Emi.wan@xxx.com</param-value>
</init-param>
<init-param>
<param-name>adminEmail</param-name>
<param-value>Admin@xxx.com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>email</servlet-name>
<url-pattern>/email.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>managerEmail</param-name>
<param-value>David.tang@xxx.com</param-value>
</context-param>
</web-app>
然后一个servlet----Email.java
Java代码
public class Email extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("My Email is "+getServletConfig().getInitParameter("myEmail")+"<br>");
out.println("Admin\'s Email is "+getServletConfig().getInitParameter("adminEmail")+"<br>");
out.println("Manager\'s Email is "+getServletContext().getInitParameter("managerEmail")+"<br>");
}
}
public class Email extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("My Email is "+getServletConfig().getInitParameter("myEmail")+"<br>");
out.println("Admin\'s Email is "+getServletConfig().getInitParameter("adminEmail")+"<br>");
out.println("Manager\'s Email is "+getServletContext().getInitParameter("managerEmail")+"<br>");
}
}
如果我修改了web.xml中
<init-param>和<context-param>的<param-value>值,书上说只能项目重部署的时候才能看见这个改变,可是我直接刷新几次网页(强调:一定要是几次)就看到改动的值了,不明白为什么,难道不用重部署,servlet也可以再次初始化,再次去读web.xml的初始化参数吗?
在eclipse里,你只改要代码或配置文件,然后保存,它会自动编译的,会重新启动tomcat的,不信,你保存好,注意看一下,eclipse里的控制台,肯定会有重启信息的
分享到:
相关推荐
Servlet初始化参数是在Servlet容器启动时设置的,这些参数可以在整个应用生命周期中被Servlet访问,通常用来配置Servlet的行为或应用的配置信息。本示例提供了对Servlet初始化参数的演示,帮助开发者了解如何在实际...
"Servlet获取初始化参数" Servlet 获取初始化参数是 Servlet 编程中一个非常重要的主题。下面,我们将详细地讨论如何获取应用范围初始化参数和 servlet 初始化参数。 获取应用范围初始化参数 在 web.xml 文件中,...
Servlet 初始化参数和上下文初始化参数训练及处理数据库示例 本文主要讲解 Servlet 初始化参数和上下文初始化参数的概念、定义、配置和获取方法。同时,通过实践演示,展示了如何在 Servlet 中读取初始化参数和上...
servlet读取初始化参数和属性文件的数据
例如,在 init 方法中可以执行一些初始化操作,而在 destroy 方法中可以执行一些清理操作。 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。需要非常细致...
通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。
- 初始化:当Servlet首次被请求或者在web.xml中配置了`load-on-startup`时,Servlet容器会调用Servlet的`init()`方法进行初始化。 - 服务:每当有新的请求到来,Servlet容器创建一个Servlet实例,然后调用`service...
1. **创建Servlet进行初始化**:首先,需要创建一个Servlet,该Servlet会在容器启动时自动加载,从而执行`log4j`的初始化操作。 2. **配置log4j文件名参数**:在web.xml中,为Servlet配置初始化参数,指明`log4j`...
#### 三、Servlet初始化 Servlet的初始化是一个重要的步骤,涉及到资源的分配和准备。初始化过程主要由容器(如Tomcat)负责,具体步骤如下: 1. **加载Servlet类**:当服务器启动并接收到针对某个Servlet的第一个...
当Web应用启动时,`ActionServlet`作为Servlet初始化并存入Tomcat容器中。这一过程发生在Struts首次被使用时。`ActionServlet`在初始化过程中主要负责配置和管理整个Struts应用的环境,包括但不限于配置文件的加载、...
03springmvc注解驱动开发的servlet3.0初始化配置类.avi
`init()`方法在Servlet实例化后首次调用,用于初始化Servlet;`service()`方法处理每个到来的请求;而`destroy()`方法在Servlet不再使用时调用,用于释放资源。 接下来,我们探讨Servlet容器模型。Servlet容器,如...
4. **ServletConfig接口**:在Servlet初始化时,Servlet容器会传递一个ServletConfig对象给Servlet,这个对象包含了Servlet的配置信息,如Servlet名称、初始化参数等。 5. **ServletContext接口**:表示整个Web应用...
1. 初始化:Servlet 初始化时,会读取 web.xml 文件中的配置信息,并执行 init 方法。在这个阶段,Servlet 会获取 web.xml 文件中的预定义参数。 2. 服务:在 Servlet 初始化完成后,会进入服务阶段。在这个阶段,...
2.初始化阶段:在这个阶段,SERVLET 容器会调用 SERVLET 的 init() 方法,以完成 SERVLET 的初始化工作。 3.服务阶段:在这个阶段,SERVLET 容器会将用户的请求传递给 SERVLET,并调用 SERVLET 的 service() 方法,...
9. **监听器(Listeners)**: Servlet API包含各种监听器接口,如ServletContextListener、ServletRequestListener、HttpSessionListener等,可以监听特定的事件,比如Web应用启动、Servlet初始化、用户会话创建等。...
1. `void init(ServletConfig config) throws ServletException`:这是Servlet的初始化方法,当Servlet容器(如Tomcat)加载Servlet时调用。ServletConfig对象在此方法中传递,包含了Servlet的配置信息,如初始化...
2. **ServletConfig**:每个Servlet实例都有一个对应的ServletConfig对象,它提供了Servlet的初始化参数和ServletContext的引用。 3. **ServletContext**:代表整个web应用的上下文,提供了获取应用级资源、注册...
- 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求,都会调用`service()`方法来处理请求和响应。 - 销毁:当Servlet不再使用或者Web应用停止...