CDI进阶第七步 注入内置对象

这个技术是什么意思呢?

就是说CDI可以注入一些容器自带的东西。比如强大的HttpServletRequest.

试想一下,如果CDI不能注入系统自带的资源,比如JPA持久化上下文,那么CDI技术有何意义?现在的web项目大都是要操作数据库的。

但是JPA的持久化上下文,它本身是用JNDI进行管理的。

我先写个EJB自动注入HttpServletRequest的例子。至于CDI的例子也一样。

package cdibeans;
 
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
 
@Stateless
public class HelloEjb {
 
	@Inject
	private HttpServletRequest request;
	public void hello(){
		request.setAttribute("greeting", "hello world!");
	}
}

接下来就是servlet的代码

package cdibeans;
 
import java.io.IOException;
 
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@WebServlet("/hello.html")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@EJB
	private HelloEjb ejb;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		ejb.hello();
		req.getRequestDispatcher("/hello.jsp").forward(req, resp);;
	}
}
附带jsp 的代码

<html>
	<body>==${greeting}==</body>
</html>

浏览器访问效果。

 

那么除了request,还可以注入什么?

HttpSession

ServletContext

可以使用@Resource注解,采用JNDI方式注入的有:

UserTransaction

Principal

Validator

ValidatorFactory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值