在学习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