毕业设计网
开发环境 |

jsp:useBean动作

 jsp:useBean动作

前面已经介绍过include指令,它是在JSP文件被转jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。

此动作用来生成一个bean组件,并设定它的id号及使用范围
<jsp:useBean  id=”beanName”  scope="page|request|session|application|"class=”package.class”  type="package.class"  beanName="{package.class|<%=expression%>}  type="package.class"">action  for  bean  </jsp:useBean>
 id=”beanName”:定义生成bean组件的名字,不能重名且scope的值也最好一样,否则JSP引擎将认定最先被创建的那个。
scope=page|request|session|application”:定义bean的活动范围,bean只有在它定义的范围里才能使用,在它的活动范围外将无法访问到它。

JSP为它设定的范围有:
page: bean的缺省使用范围
request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。还可通过使用Request对象访问bean,如request.getAttribute(beanName)
session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page、另一request里对此bean的调用。但必须在创建此bean的文件里事先用page指令指定了session=true。
application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request以及另一session里对此bean的调用。
 class=”package.class”:用class属性指下的类示例一个bean,其中package名必须是类里用关键字package指定的。
 type=”package.class”
 class=”package.class”  type=”package.class”
 beanName=”{package.class|<%=expression%>}”  type=”package.class”

如:<jsp:useBean id="name" class="package.class" />

   这行代码的含义是:“创建一个由class属性指定的类的实例,然后把它绑定到其名字由id属性给出的变量上”。不过,就象我们接下来会看到的,定义一个scope属性可以让Bean关联到更多的页面。此时,jsp:useBean动作只有在不存在同样id和scope的Bean时才创建新的对象实例,同时,获得现有Bean的引用就变得很有必要。

如:testBean.jsp
<jsp:useBean  id=”student”  scope=”page”  class=”mime.student”  />
<%=student.getName()%><br>
<%  student.setName(“wll”);  %>
student.java
package  mine;
public  class  student{
long  classno;
String  name;
int  age;
Boolean  sex;
public  student(){
classno=12345;
name=”aaaa”;
age=21;
sex=true;
}
public  long  getClassno(){
return  classno;
}
public  void  setClassno(long  no){
this.classno=no;
}
public  String  getName(){
return  name;
}
public  void  setName(String  name){
this.name=name;
}
public  int  getAge(){
return  age;
}
public  void  setAge(int  age){
this.age=age;
}
public  boolean  getSex(){
return  sex;
}
public  void  setSex(Boolean  sex){
this.sex=sex;
}
}
注:
scope=page时,运行testBean.jsp文件,name的初始值为”aaaa”。虽然在jsp文件中又重设为“wll”,但刷新后仍为“aaaa”
scope=session时,运行test.jsp文件,name的初始值为”aaaa”。虽然在jsp文件中又重设为“wll”,但刷新后仍为“wll”,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出“wll”。直到关闭所有窗口,再运行testBean.jsp文件,输出才会为初始值”aaaa”。
scope=application时,运行testBean.jsp文件,name的初始值为”aaaa”。虽然在jsp文件中又重设为“wll”,但刷新后仍为“wll”,只要不关闭此窗口,任何刷新或打开一个新窗口,都输出“wll”。即使关闭所有窗口,再运行testBean.jsp文件,输出仍为  “wll”。除非关闭服务后又重启,再运行testBean.jsp文件,name的输出为初始值”aaaa”。
scope=request时,新建一文件testBean1.jsp内容与testBean.jsp一样。先在浏览器中运行testBean.jsp文件,输出name的值为初始值”aaaa”。再在在浏览器中运行testBean1.jsp文件,此时输出为“wll”,因为它们算是相同的request。

以上是一部分介绍,如需要完整的资料或者如不符合您的要求,请联系技术人员qq:242219979咨询

上一篇:jsp include指令(Directive)
下一篇: jsp:setProperty动作


版权所有 毕业设计网联系qq:242219979 © 2007-2022