首页 > 代码库 > jsp:useBean中type和class的区别

jsp:useBean中type和class的区别

<jsp:useBean id="myBean" class="package.MyBean" scope="request"></jsp:useBean>

<jsp:useBean id="myBean" class="package.MyBean" scope="request"></jsp:useBean>

以上两种用法,当myBean不为空时,在使用上两者没有什么区别。但是当myBean被设为null后,例如request.setAttribute("myBean",null),两者在使用上就有区别了。使用class="package.MyBean"时不会抛出异常,使用type="package.MyBean"时会抛出异常。原因是当使用class时,首先在当前作用范围内查找是否存在myBean,如果存在则直接使用现成的,如果不存在则new一个。而当使用type时,如果当前范围内不存在myBean,而且又没有使用class或beanName指定type时,就会抛出异常。并且class与beanName必须指定package(即引入了包),而type可以不指定。