<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可以不指定。
<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可以不指定。
本文详细解析了 JSP 中 useBean 标签的两种不同用法:通过 class 和 type 属性来实例化或查找 Bean 的区别。并探讨了在 session 范围内设置 null 值后两种方式的表现差异。
6644

被折叠的 条评论
为什么被折叠?



