基础19——JavaBean
1.javabean介绍
javabean是一个可复用,跨平台的软件组件,实际上是使用java语言编写的一个特殊的java类。Javabean分两种,一种用于GUI开发,一种用于web应用开发,他主页负责业务逻辑的处理。
2.javabean的特点
1)javabean必须是public类型的公关类;
2)在javabean中需要提供一个public类型的无参构造方法;
3)为javabean的属性提供setter和getter方法,setter方法为属性设置值,getter方法获取属性的值。注意杜宇boolean类型的属性,允许使用“is”代替“get”和"set"。
4)get和set方法必须是public类型的,而javabean属性必须是private类型的。
5)在设计javabean时通常将其放在一个命名的包下
注意:javabean除了可以定义get,set方法,还可以定义其他方法。
3.javabean的应用范围
说明:在jsp使用<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>这三个动作标记访问javabean。其中在<jsp:useBean>动作标记的作用是在jsp页面中产生一个javabean的快捷参考。其scope属性有四个取值,分别为page,
request,session,application,表示页面所引用的javabean的应用范围。
4.javabean开发注意事项
1)不是试图在javabean属性中设置html或JavaScript脚本,因为不同的浏览器对脚本的兼容性不同,可能会导致浏览器崩溃。与此同时,复杂的html脚本也会闲置javabean的寿命和灵活性。
2)不要提供任何的分支选择,如果用户使用不同的系统浏览页面,可以提供一种可以替换的方法。
5.访问javabean
前述:在jsp页面中通过使用于javabean有关的动作标记访问javabean,访问javabean的动作标记主要有以下三种。
①<jsp:useBean>:在jsp页面中声明并创建javabean对象实例。
其语法格式为:
<jsp:useBean id="对象名" class="完整包路径" scope="作用范围"/>
id:代表引用javabean对象的id,即在该jsp页面中相当于一个局部变量,使用此ID表示引用的javabean对象。需要注意的是,在同一个会话范围内不允许有两个相同ID的javabean对象。
class:代表引用javabean的具体类名。
scope:指定引用的javabean的作用范围,可以是page,request,session或application。默认page。
②<jsp:setProperty>:为javabean对象的特定属性设置值。
其语法格式为:
<jsp:setProperty property="width" name="rectangle" value="20"/>
property:对应javabean类的同名成员变量,例如property属性的值为width,对应于Rectangle类中的成员变量width。property属性的值也可以为“ * ”,表示自动匹配表单中的属性名。所以其表单的name必定要和javabean的属性命名一样。
name:name属性值对应于<jsp:useBean>动作标记的ID属性值。
value:可选属性,为property属性设定值。
③<jsp:getProperty>:获取javabean对象的属性值,并且显示在页面上。
其语法格式为:
<jsp:getProperty property="length" name="rectangle"/>
property:其值为bean对象的属性名,代表我们要获取该bean对象的啥属性值。
name:name属性值对应于<jsp:useBean>动作标记的ID属性值。
查找原理:
web容器在执行<jsp:getProperty>动作标记时依据property属性指定的属性名自动调用javabean对应的getter方法。
实例:
1)编写javabean
package henu.action; public class Rectangle { private double width; private double length; private double area; private double perimeter; public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getLength() { return length; } public void setLength(double length) { this.length = length; } public double getArea() { return area; } public void setArea(double area) { this.area = area; } public double getPerimeter() { return perimeter; } public void setPerimeter(double perimeter) { this.perimeter = perimeter; } }
2)在jsp中使用该bean
input.jsp . . . <form action="result.jsp" method="post"> 长:<input type="text" name="lenght"/><br/> 宽:<input type="text" name="width"/><br/> <input type="submit" value="计算"/> </form> . . . result.jsp <body> <jsp:useBean id="rectangle" class="package henu.action.Rectangle"/>
<jsp:setProperty property="*" name=rectangle"/>
长:<jsp:getProperty property="length" name="rectangle"/><br/>
宽:<jsp:getProperty property="width" name="rectangle"/><br/>
</body>