CDI进阶第三步 验证器
验证的需求在实际的应用开发中经常用到,比如对EMAIL进行验证,对手机号码进行验证等等。
我这里用一个简单的DEMO来讲下怎样使用J2EE的验证技术。
J2EE的验证技术很通用,不止在CDI可以用,而且在EJB,JPA都可以使用。
为了简单起见,我们先使用J2EE内建的注解来进行验证。
先写个简单的CDI BEAN。
package cdivalidate;
import javax.enterprise.context.RequestScoped;
import javax.validation.constraints.Max;
@RequestScoped
public class HelloBean {
private int num;
public void setNum(@Max(100) int num) {
this.num = num;
}
public CharSequence greeting() {
return "Hello," + num;
}
}
这里用到一个注解,javax.validation.constraints.Max,这是个内建注解,表示最大值为100,也就是超过100就不会报错。然后我们写个servlet来试一试。
package cdivalidate;
import java.io.IOException;
import javax.inject.Inject;
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;
@Inject
private HelloBean helloBean;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int num = Integer.parseInt(req.getParameter("num"));
helloBean.setNum(num);
resp.getWriter().append(helloBean.greeting());
}
}
好了,servlet写完了。
开始在浏览器试一试。
可以看到当我在浏览器输入100时,很正常,输入101后,就报异常了,验证不通过。