如何讓XML來配置Servlet
我們在Web應用中可以使用xml來配置Servlet,給其提供初始化參數(shù),如下例:
我們創(chuàng)建的Servlet為:ServletDemo.java,代碼如下:
- /*
- *Createdon2005-8-29
- *
- *TODOTochangethetemplateforthisgeneratedfilegoto
- *Window-Preferences-Java-CodeStyle-CodeTemplates
- */
- packagezy.pro.wd.servlet;
- importjava.io.IOException;
- importjava.io.PrintWriter;
- importjavax.sql.DataSource;
- importjavax.servlet.ServletException;
- importjavax.servlet.http.HttpServlet;
- importjavax.servlet.http.HttpServletRequest;
- importjavax.servlet.http.HttpServletResponse;
- /**//**
- *@authorzhangyi
- *
- *TODOTochangethetemplateforthisgeneratedtypecommentgoto
- *Window-Preferences-Java-CodeStyle-CodeTemplates
- */
- publicclassServletDemoextendsHttpServlet...{
- Stringmessage;
- DataSourceds;
- /**//**
- *Constructoroftheobject.
- */
- publicServletDemo()...{
- super();
- }
- /**//**
- *Destructionoftheservlet.<br>
- */
- publicvoiddestroy()...{
- super.destroy();//Justputs"destroy"stringinlog
- //Putyourcodehere
- }
- /**//**
- *ThedoGetmethodoftheservlet.<br>
- *
- *Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
- *
- *@paramrequesttherequestsendbytheclienttotheserver
- *@paramresponsetheresponsesendbytheservertotheclient
- *@throwsServletExceptionifanerroroccurred
- *@throwsIOExceptionifanerroroccurred
- */
- publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
- throwsServletException,IOException...{
- response.setContentType("text/html");
- PrintWriterout=response.getWriter();
- out.println("<!DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");
- out.println("<HTML>");
- out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");
- out.println("<BODY>");
- out.print("Thisis");
- out.print(this.getClass());
- out.println(",usingtheGETmethod<br>");
- out.println(this.getServletConfig().getInitParameter("message"));
- out.println("</BODY>");
- out.println("</HTML>");
- out.flush();
- out.close();
- }
- /**//**
- *ThedoPostmethodoftheservlet.<br>
- *
- *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.
- *
- *@paramrequesttherequestsendbytheclienttotheserver
- *@paramresponsetheresponsesendbytheservertotheclient
- *@throwsServletExceptionifanerroroccurred
- *@throwsIOExceptionifanerroroccurred
- */
- publicvoidinit()throwsServletException...{
- //Putyourcodehere
- }
- }
在此Servlet中我們定義了兩個屬性message和ds。我們現(xiàn)在在web.xml中作如下配置:
- <servlet>
- <description>
- ThisisthedescriptionofmyJ2EEcomponent
- </description>
- <display-name>
- ThisisthedisplaynameofmyJ2EEcomponent
- </display-name>
- <servlet-name>ServletDemo</servlet-name>
- <servlet-class>zy.pro.wd.servlet.ServletDemo</servlet-class>
- <init-param>
- <description>initializethefieldofmessage</description>
- <param-name>message</param-name>
- <param-value>
- welcomehere,thankyouforvisiting!!!
- </param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>ServletDemo</servlet-name>
- <url-pattern>/servlet/ServletDemo</url-pattern>
- </servlet-mapping>
加粗的部分是我們要作的配置。在其中我們給message屬性設置了初始值:
welcomehere,thankyouforvisiting!!!
注意:此處我們不能同時給ds設置初始值,因為web.xml的DTD中約定了只能定義一個屬性也就是在配置文件中只允許聲明一個參數(shù)值對。這樣,在我們的servlet中就可以這樣來訪問此屬性:this.getServletConfig().getInitParameter("message")。但是,有時候我們需要同時對多個屬性用XML來初始化,那么我們就需要自己來寫XML文件,同時自己來解析了。
使用XML來配置Servlet的好處:
如果不在XML中對Servlet配置,那么我們修改Servlet的屬性的話就要重新啟動服務器,而如果使用XML來配置的話就不需要重新啟動服務器而可以自動生效。服務器可以自動監(jiān)視其改變而重新裝入文檔。對企業(yè)來說,系統(tǒng)的連續(xù)運營是很重要的。
XML來配置Servlet主要用在初始化參數(shù)在運行過程中需要改變的情況下。
【編輯推薦】