jsp:useBean的用法

有几种用法,下面逐一讲解:

1》
<%@page import="MyBean.*"%>
<jsp:useBean class="MyBean.TestBean" id="user" scope="session"/>
生成的java代码如下:
Java代码:  
  1. MyBean.TestBean user = null;  
  2.       synchronized (session) {  
  3.         user = (MyBean.TestBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  4.         if (user == null){  
  5.           user = new MyBean.TestBean();  
  6.           _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  7.         }  
  8.       }  
先从session范围内查找user属性是否存在,如果不存在,user = new MyBean.TestBean(),然后把user追加到session中。存在的话,啥也不做。
2》
<%@page import="MyBean.*"%>
<jsp:useBean type="BaseBean" class="MyBean.TestBean" id="user" scope="session"/>
生成的java代码如下:
Java代码:  
  1. BaseBean user = null;  
  2.       synchronized (session) {  
  3.         user = (BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  4.         if (user == null){  
  5.           user = new MyBean.TestBean();  
  6.           _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  7.         }  
  8.       }  
 BaseBean是TestBean的父类。
除了user的类型是BaseBean,其它的处理逻辑和1》相同。
3》
<%@page import="MyBean.*"%>
<jsp:useBean type="MyBean.BaseBean" beanName="MyBean.TestBean" id="user" scope="session"/>
生成的java代码如下:
Java代码:  
  1. MyBean.BaseBean user = null;  
  2.       synchronized (session) {  
  3.         user = (MyBean.BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  4.         if (user == null){  
  5.           try {  
  6.             user = (MyBean.BaseBean) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "MyBean.TestBean");  
  7.           } catch (java.lang.ClassNotFoundException exc) {  
  8.             throw new InstantiationException(exc.getMessage());  
  9.           } catch (java.lang.Exception exc) {  
  10.             throw new javax.servlet.ServletException("Cannot create bean of class " + "MyBean.TestBean", exc);  
  11.           }  
  12.           _jspx_page_context.setAttribute("user", user, javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  13.         }  
  14.       }  
和2》的区别如下:
1>不使用new关键字进行创建,而是使用Beans.instantiate来加载并实例化对象
2>对象创建完以后进行了强制类型转换(MyBean.BaseBean)
4》
<%@page import="MyBean.*"%>
<jsp:useBean type="MyBean.BaseBean" id="user" scope="session"/>
生成的java代码如下:
Java代码:  
  1. MyBean.BaseBean user = null;  
  2.       synchronized (session) {  
  3.         user = (MyBean.BaseBean) _jspx_page_context.getAttribute("user", javax.servlet.jsp.PageContext.SESSION_SCOPE);  
  4.         if (user == null){  
  5.           throw new java.lang.InstantiationException("bean user not found within scope");  
  6.         }  
  7.       }  
先从session范围内查找user属性,如果不存在就直接抛出异常,存在的话直接引用。
原文链接:http://www.software8.co/wzjs/jsp/2697.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值