使用XML檔案來實現對Servlet的配置

來源:互聯網
上載者:User
我們在Web應用中可以使用xml來配置servlet,給其提供初始化參數,如下例:
我們建立的Servlet為:ServletDemo.java,代碼如下:

/*
 * Created on 2005-8-29
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package zy.pro.wd.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.sql.DataSource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author zhangyi
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ServletDemo extends HttpServlet {
    


    String  message;
    DataSource  ds;

    /**
     * Constructor of the object.
     */
    public ServletDemo() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out
                .println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the GET method<br>");
        
        out.println(this.getServletConfig().getInitParameter("message"));
        
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     * 
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */

    public void init() throws ServletException {
        // Put your code here
    }

}
在此Servlet中我們定義了兩個屬性message和ds。我們現在在web.xml中作如下配置:
    <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>ServletDemo</servlet-name>
        <servlet-class>zy.pro.wd.servlet.ServletDemo</servlet-class>

        <init-param>
            <description>initialize the field of message</description>
            <param-name>message</param-name>
            <param-value>
                welcome here ,thank you for visiting !!!
            </param-value>
        </init-param>

    </servlet>

    <servlet-mapping>
        <servlet-name>ServletDemo</servlet-name>
        <url-pattern>/servlet/ServletDemo</url-pattern>
    </servlet-mapping>
    加粗的部分是我們要作的配置。在其中我們給message屬性設定了初始值:
welcome here ,thank you for visiting !!!
注意:此處我們不能同時給ds設定初始值,因為web.xml的DTD中約定了只能定義一個屬性也就是在設定檔中只允許聲明一個參數值對。這樣,在我們的servlet中就可以這樣來訪問此屬性:
this.getServletConfig().getInitParameter("message")。
但是,有時候我們需要同時對多個屬性用XML來初始化,那麼我們就需要自己來寫XML檔案,同時自己來解析了。

使用XML來配置Servlet的好處:

如果不在XML中對Servlet配置,那麼我們修改Servlet的屬性的話就要重新啟動伺服器,而如果使用XML來配置的話就不需要重新啟動伺服器而可以自動生效。伺服器可以自動監視其改變而重新裝入文檔。對企業來說,系統的連續運營是很重要的。

XML來配置Servlet主要用在初始化參數在運行過程中需要改變的情況下。

(如果可以實現配置多屬性的話,那麼不是有點象Spring中的動態注入???)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.