起初,JavaBean的目的是为了将可以重复使用的代码进行打包,随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一此业务逻辑或封装一些业务对象
JavaBean 有广义的和狭义的两种概念。
广义的JavaBean是指普通的Java 类;
狭义的JavaBean是指严格按照 JavaBean 规范编写的 Java 类
使用JavaBean的好处:
可以使得JSP页面变得清晰;
节省软件开发时间(可以直接使用已经测试和可信的已有组件,避免了重复开发);
降低系统维护的难度
为JSP应用带来了更多的可伸缩性,使系统变得健壮和灵活。
JavaBean的分类
可视的JavaBean:传统的JavaBean应用于可视化界面(如java图形界面中使用的按钮、文本框或列表框等)。
非可视化的JavaBean:封装逻辑、封装数据,与JSP搭配使用。
编写规范:
JavaBean是一个public类
一定使用了package语句进行打包,并且声明的打包路径非sun公司声明使用的路径。
有一个无参数的构造方法
属性一般是私有的(即用private修饰),以保证数据的完整性和封装性
对属性值的获取有相应的getXxx()方法,并且此方法是公有的(用public修饰)若要获取的属性为boolean类型则可以使用isXxx()方法
对属性值的设置有相应的setXxx()方法,并且此方法也是公有的(用public修饰)
package bean;
public class SimpleBean{
private String name;
private int number;
public SimpleBean(){}
public void setName(String name)
{this.name = name;}
public void setNumber(int number)
{this.number = number;}
public String getName()
{return name;}
public int getNumber()
{return number;}
}
编写JavaBean时,需要将其放入某个包中,这样才能被JSP页面访问到
保存JavaBean存JavaB
第1步:一个JavaBean编写完以后,需要将它编译成“.class”文件。
第2步:并将此“.class”文件放到本次应用的WEB-INF\classes目录之下,并且需要根据Bean的包名,在classes下再建立相应的子目录。
例如:package ch7.test 则该bean的.class文件需要放置在“WEB-INF\classes\ch7\test”中
使用JavaBean
第1步:在 JSP页面中通过import指令引入bean 格式:<%@ page import=”ch7.test.*”%>
第2步:通过useBean标记来创建bean对象
格式:
<jsp:useBean id=”bean_name” class=”创建bean的类” scope=”bean的有效范围“> </jsp:useBean> 其中:
1.创建bean的类要带有完整的包名,如ch7.test.Circle
2.scope表示bean的取值范围,可取page,session,request和application,代表不同的作用范围。
当范围设为page时,表示这个JavaBean的生命周期只在一个页面内有效。
当范围设为request时,这个Bean在整个请求的范围内都有效。
当范围设为session时,表示Bean可以在当前HTTP会话的生命周期内被所有页面访问。
设为application范围内的Bean生命周期是最长的,从创建了这个Bean开始,就可以在任何使用相同application的JSP文件中使用这个Bean。
第3步,在jsp页面中,可以通过直接调用bean的方法来获取和修改bean的属性值,还可以通过jsp动作标记来获取和修改bean的属性。
直接调用bean的方法:girl.setradius(100)等。
动作标签方法:<jsp:getProperty>和<jsp:setProperty>
一个JavaBean编写完以后,需要将它编译成“.class”文件,并将此“.class”文件(连同其目录)放到本次应用的WEB-INF\classes目录之下。JSP中使用
JavaBean的标签
<jsp:useBean>标签:在网页中创建一个Bean对象
<jsp:setProperty>标签:用于为Bean对象中的属性赋值
<jsp:getProperty>标签:用于获取Bean对象中属性的值
<jsp:useBean>标签用来创建一个Bean对象,其语法为:
<jsp:useBean id=“beanname” class=“package.class” [scope=“page|request|session|application”] />
例:<jsp:useBean id="myBean" scope="request" class="bean.SampleBean"/>
<jsp:setProperty>标签用来设置Bean对象的属性。其语法有多种
(1). <jsp:setProperty name=“beanName” property=“propertyName” value=“propertyValue” />
用来为bean的属性赋值,其中name指出是在操作哪个bean,property指出对该bean的哪个属性赋值,value用来指定给属性赋的值。
例:<jsp:setProperty name="myBean" property="sample" value="Hello,JSP"/>
(2). <jsp:setProperty name=“beanName” property=“propertyName” param=“paramName” />
当form表单中参数的名字和Bean中属性名不相同时, 这种用法表示将一个传入参数的值赋给bean的某个属性。
其中name指出是在操作哪个bean,property指出对该bean的哪个属性赋值,而param表示传入参数的名字。
<jsp:getProperty>标签用来获取Bean对象的属性值,并显示在页面上,其语法如下:<jsp:getProperty name=“beanname” property=“propertyname” />
name指出了要获取哪个bean的属性值,property指出要获取该bean的哪个属性值
例:<jsp:getProperty name="myBean" property="sample"/>
<jsp:useBean id=“beanname” class=“package.class” [scope=“page|request|session|application”] />
class的值要与bean的类名相同,id作为对象名,可任取
<jsp:getProperty name=“beanname”property=“propertyname” />
中name的值要与useBean中的id的值相同,propertyname要与bean的属性名相同
<jsp:setProperty name=“beanName” property=“propertyName” value=“propertyValue” />中的name的值要与useBean中的id的值相同,propertyname要与bean的属性名相同。
<jsp:setProperty name=“beanName” property=“propertyName”/>
form表单中的参数名、 propertyName和bean中属性名三者要相同
<jsp:setProperty name=“beanName”, property=“propertyName” param=“paramName”/>
propertyName和bean中属性名要相同, paramName要和form表单中属性名相同
解决中文乱码的JavaBean
在JSP页面之中,处理中文字符经常会出现字符乱码的现象,特别是在一些表单传递中文数据时候容易产生,它的解决办法有很多,如将request的字符集指定为中文字符集、编写JavaBean对乱码字符进行转码等,下面就通过实例,编写JavaBean对象来解决中文乱码现象问题。
在JSP页面中用来显示时间的JavaBean
JavaBean是用Java语言所写成的可重用组件,它可以是一个实体类对象,也可以一个业务逻辑的处理,但编写JavaBean要遵循JavaBean规范,下面通过实例在JSP页面中调用获取当前时间的JavaBean。index.jsp:实例化DateBean对象,获取当前日期时间及星期实现电子钟效果 数组转换成字符串
在程序开发之中,将数组转换成为字符串是经常被用到的,如表单之中的多选框按钮,在提交之后它就是一个数组对象,由于数组对象在业务处理之中不是十分方便,所以在实际应用过程中通过将其转换成为字符串后,再进行处理。
JavaBean文件操作
读文件bean
bean可以列出用户指定的目录中的文件、并可读取目录中文件的内容,bean的scope取值为session。
有两个JSP页面:select.jsp和read.jsp,其中,select.jsp页面调用bean选择目录;read.jsp页面调用bean读取相应目录下文件 。
写文件bean
bean可以将JSP页面write.jsp提交的文本信息以文件格式保存到服务器,文件所在的目录以及名字由write.jsp负责指定 。
3 上传文件bean 例:Upfile.jsp
上传文件bean使用了javax.servlet.http包中的类,javax.servlet.http包不在JDK的核心类库中,因此你需要将Tomcat安装目录lib子目录中的servlet-api.jar文件复制到Tomcat服务器所使用的JDK的扩展目录中,比如复制到D:\jdk1.6\jre\lib\ext中 。