jsp:useBean的用法

来源:互联网 发布:ncbi geo数据下载 编辑:程序博客网 时间:2024/05/30 13:41

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

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
原创粉丝点击