<jsp:useBean id="product" class="test.Product" scope="session"></jsp:useBean>
<jsp:useBean id="product" type="test.Product" scope="session"></jsp:useBean>
以上的两种写法,当product!=null两者视乎没什么区别,若使用session.setAttribute("product",null);设置后,在访问包含有<jsp:useBean id="product" type="test.Product" scope="session"></jsp:useBean>语句的页面时就会抛出异常(org.apache.jasper.JasperException: bean product not found within scope)。而使用<jsp:useBean id="product" class="test.Product" scope="session"></jsp:useBean>
不会抛异常,这两种写法意义是相同的。假如使用class,它是先判断拿不拿得到实例的bean,若拿不到就使用new关键字实例化一个,而使用的是type时,它只是查找指定的范围中是否存在,在不存在时又没使用class或beanName 指定type,就会抛出异常,因此在使用type时就需要注意这点。并且class与beanName 必须指定package (即使引入了包),而type可以不指定。