资源注射指的是:web.xml里的参数不需要servlet主动去获取,通过Tomcat启动时把web.xml里的配置的信息主动“注射”到servlet里;
资源注射通过注解来实现的:
注解是一种特殊的接口,以“@”符号为标志,用法如下:
@Resource(name="messageName")
private String message;
或者
private @Resource(name="messageName") String message;
表示message的值会在servlet运行是动态注入。
web.xml中使用< env-entry>来配置资源,< env-entry>仅能配置java.lang包下标准类型的变量;
eg:
<env-entry>
<env-entry-name>hello</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>hello,world</env-entry-value>
</env-entry>
实际上资源注射的原理是JNDI(Java命名目录接口);在web.xml中用< env-entry>配置好JNDI资源,然后使用@Resource将指定名称的JNDI注射到servlet中;
不使用@Resource,可以使用如下代码:
Context ctx=new InitialContext();//实例化一个Context对象
String message=(String)ctx.lookup("message");//查找资源message