在學習servletContext的時候,我們知道了可以在web.xml中通過<context-param>標簽來定義全局的屬性(所有servlet都能讀取的信息),並在servlet中通過servletContext.getInitParameter("name")的方式讀取,java5以后提供了新的方案叫做資源注入就是通過注解(Annotation)的方式.也就是說,不需要servlet主動讀取數據,Tomcat在啟動的時候會把web.xml里配置的信息主動"注入"到Servlet中,我們不需要在編寫讀取的代碼,只需要定義出來就能用了,下面舉例介紹:
在web.xml中配置的代碼如下:
<servlet> <servlet-name>AServlet</servlet-name> <servlet-class>com.wang.servlet.AServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AServlet</servlet-name> <url-pattern>/AServlet</url-pattern> </servlet-mapping> <env-entry> <env-entry-name>info1</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>Hello Servlet</env-entry-value> </env-entry> <env-entry> <env-entry-name>number</env-entry-name> <env-entry-type>java.lang.Integer</env-entry-type> <env-entry-value>21</env-entry-value> </env-entry> <env-entry> <env-entry-name>info2</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>Hello,Servlet,I,am,happy</env-entry-value> </env-entry>
新建一個servlet(我這里命名為AServlet):
public class AServlet extends HttpServlet { private @Resource(name="info1") String info1; private @Resource(name="info2") String info2; private @Resource(name="number") int i; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print("info1="+info1+"<br>"); out.print("number="+i+"<br>"); String[] arrInfo2=info2.split(","); for(String s:arrInfo2){ out.print("arrInfo2--"+s); out.print("<br>"); } } }
啟動項目,訪問Aservlet,網頁上輸出的結果為:
info1=Hello Servlet
number=21
arrInfo2--Hello
arrInfo2--Servlet
arrInfo2--I
arrInfo2--am
arrInfo2--happy