Servlet资源打针
Servlet资源注射
不需要吧,这个是我自己测试可以用的啊?
Servlet程序: import java.io.IOException; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") public class ResourceInto extends HttpServlet{ private @Resource(name="uname") String uname; //资源注射 public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html"); response.getWriter().print(uname); } public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ this.doPost(request, response); } }
在web.xml中配置该注射参数
<servlet> <servlet-name>ResourceInto</servlet-name> <servlet-class>cn.edu.bzu.ResourceInto</servlet-class> </servlet> <servlet-mapping> <servlet-name>ResourceInto</servlet-name> <url-pattern>/ResourceInto</url-pattern> </servlet-mapping> <!--配置注射的资源 --> <env-entry> <env-entry-name>uname</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>TOM</env-entry-value> </env-entry>
资源注射的工作原理是JNDI(Java命名与目录接口,Java Naming and Directory Interface)。Servlet实例中使用〈env-entry>配置了名为uname的JNDI资源,然后使用@Resource将指定名称的JNDI资源注射到Servlet实例里。
如果不使用@Resource,通过查找JNDI同样可以获取到这三个资源,代码如下:
Context ctx=new InitialContext(); //实例化一个Context对象 String message=(String)ctx.lookup("uname"); //查找资源uname
Servlet中不公可以注射String、Integer等类型的变量,还可以注入自定义的Java Bean以及数据源等复杂类型的变量。
1 楼
carl32hao
2012-12-05
String message=(String)ctx.lookup("uname"); //查找资源uname
这里应该加上 java:comp/env否则取不到值
这里应该加上 java:comp/env否则取不到值
2 楼
亦梦亦真
2012-12-10
carl32hao 写道
String message=(String)ctx.lookup("uname"); //查找资源uname
这里应该加上 java:comp/env否则取不到值
这里应该加上 java:comp/env否则取不到值
不需要吧,这个是我自己测试可以用的啊?