`
haofenglemon
  • 浏览: 243003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

servlet初始化问题

阅读更多
我看书上说: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获取初始化参数.doc

    "Servlet获取初始化参数" Servlet 获取初始化参数是 Servlet 编程中一个非常重要的主题。下面,我们将详细地讨论如何获取应用范围初始化参数和 servlet 初始化参数。 获取应用范围初始化参数 在 web.xml 文件中,...

    Servlet初始化参数和上下文初始化参数训练及处理数据库示例[汇编].pdf

    Servlet 初始化参数和上下文初始化参数训练及处理数据库示例 本文主要讲解 Servlet 初始化参数和上下文初始化参数的概念、定义、配置和获取方法。同时,通过实践演示,展示了如何在 Servlet 中读取初始化参数和上...

    servlet读取初始化参数和属性文件的数据

    servlet读取初始化参数和属性文件的数据

    servlet线程安全问题

    例如,在 init 方法中可以执行一些初始化操作,而在 destroy 方法中可以执行一些清理操作。 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。需要非常细致...

    Listener、Filter、Servlet与Java Web项目初始化项目例子 源代码

    通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    - 初始化:当Servlet首次被请求或者在web.xml中配置了`load-on-startup`时,Servlet容器会调用Servlet的`init()`方法进行初始化。 - 服务:每当有新的请求到来,Servlet容器创建一个Servlet实例,然后调用`service...

    log4j初始化

    1. **创建Servlet进行初始化**:首先,需要创建一个Servlet,该Servlet会在容器启动时自动加载,从而执行`log4j`的初始化操作。 2. **配置log4j文件名参数**:在web.xml中,为Servlet配置初始化参数,指明`log4j`...

    Servlet

    #### 三、Servlet初始化 Servlet的初始化是一个重要的步骤,涉及到资源的分配和准备。初始化过程主要由容器(如Tomcat)负责,具体步骤如下: 1. **加载Servlet类**:当服务器启动并接收到针对某个Servlet的第一个...

    探讨Struts的初始化方法

    当Web应用启动时,`ActionServlet`作为Servlet初始化并存入Tomcat容器中。这一过程发生在Struts首次被使用时。`ActionServlet`在初始化过程中主要负责配置和管理整个Struts应用的环境,包括但不限于配置文件的加载、...

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

    servlet基础与servlet容器模型

    `init()`方法在Servlet实例化后首次调用,用于初始化Servlet;`service()`方法处理每个到来的请求;而`destroy()`方法在Servlet不再使用时调用,用于释放资源。 接下来,我们探讨Servlet容器模型。Servlet容器,如...

    serlvet 源码 servlet-src 源文件

    4. **ServletConfig接口**:在Servlet初始化时,Servlet容器会传递一个ServletConfig对象给Servlet,这个对象包含了Servlet的配置信息,如Servlet名称、初始化参数等。 5. **ServletContext接口**:表示整个Web应用...

    servlet传参

    1. 初始化:Servlet 初始化时,会读取 web.xml 文件中的配置信息,并执行 init 方法。在这个阶段,Servlet 会获取 web.xml 文件中的预定义参数。 2. 服务:在 Servlet 初始化完成后,会进入服务阶段。在这个阶段,...

    SERVLET基本原理

    2.初始化阶段:在这个阶段,SERVLET 容器会调用 SERVLET 的 init() 方法,以完成 SERVLET 的初始化工作。 3.服务阶段:在这个阶段,SERVLET 容器会将用户的请求传递给 SERVLET,并调用 SERVLET 的 service() 方法,...

    servlet-api.rar_java servlet_servlet api_servlet-api

    9. **监听器(Listeners)**: Servlet API包含各种监听器接口,如ServletContextListener、ServletRequestListener、HttpSessionListener等,可以监听特定的事件,比如Web应用启动、Servlet初始化、用户会话创建等。...

    Servlet中文API文档 .docx

    1. `void init(ServletConfig config) throws ServletException`:这是Servlet的初始化方法,当Servlet容器(如Tomcat)加载Servlet时调用。ServletConfig对象在此方法中传递,包含了Servlet的配置信息,如初始化...

    servlet API 中文版

    - `init(ServletConfig config)`: 这是在Servlet被加载后,由Servlet容器(如Tomcat)调用的一次性初始化方法。在这里,开发者可以进行配置读取、资源加载等初始化工作。如果在`init()`方法中抛出`...

    用于servlet程序的开发的servlet-jar包

    2. **ServletConfig**:每个Servlet实例都有一个对应的ServletConfig对象,它提供了Servlet的初始化参数和ServletContext的引用。 3. **ServletContext**:代表整个web应用的上下文,提供了获取应用级资源、注册...

    servlet api servlet api

    - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求,都会调用`service()`方法来处理请求和响应。 - 销毁:当Servlet不再使用或者Web应用停止...

Global site tag (gtag.js) - Google Analytics