目录
一、JavaBean是什么
二、创建JavaBean
三、在JSP中使用JavaBean
1、按照Java语法直接使用
2、
Bean的加载原理
scope属性的不同取值
3、
设置为一个表达式的值或字符序列
通过表单的参数的值来设置Bean的相应属性的值
4、
四、例子
举例一编辑
登陆系统
求三角形的面积
注册系统
一、JavaBean是什么
JavaBean实质上是一个Java的类,但它又有自己独特的地方,通常一个标准的JavaBean应遵循如下规范:
实现java.io.Serializable接口(JSP中使用可以不要)必须存在一个public、无参的构造方法成员变量private、成员方法public、类public获取属性值getXxx()、修改属性值setXxx、isXxx()
这个类的对象称为一个JavaBean,简称Bean
二、创建JavaBean
三、在JSP中使用JavaBean
1、按照Java语法直接使用
运行结果:
2、
使用JSP动作标记useBean加载使用bean:(实例化一个JavaBean对象)
//或
//例如:
Bean的加载原理
Tomcat服务器首先在Tomcat服务器管理的pageContent内置对象中查找是否含有这样的Bean。如果这样的Bean存在,Tomcat服务器就分配这样的Bean给用户;如果在pageContent中没有查找到JSP动作标记要求的Bean,就根据class指定的类创建一个Bean,并将所创建的Bean添加到pageContent中。
通过Tomcat服务器创建Bean的过程可以看出,首次创建一个新的Bean需要用相应类的字节码文件创建对象,当某些JSP页面再需要同样的Bean时,Tomcat服务器直接将pageContent中已经有的Bean分配给JSP页面,提高了JSP使用Bean的效率。
若修改了字节码文件,则需要重启Tomcat服务器才能使用新的字节码文件
scope属性的不同取值
作用范围含义page 只能在用户访问的当前的页面使用(包括通过include指令静态包含的页面有效);
不同用户的page bean互不相同,互相独立
request 可以在处理同一个请求的任意一个页面中使用,直到该页面执行完毕向客户端发出响应或产生新的请求为止
不同用户的request bean互不相同,互相独立
session 可以在同一次会话的任意一个页面中使用,直到会话结束;
不同用户的session bean互不相同,互相独立;
如果用户访问Web服务目录多个页面,那么每个页面id相同的session bean是同一个bean
application 有效范围是当前Web服务目录下的各个页面,存活时间直到服务器重新启动;
Tomcat服务器为访问Web服务目录的所有用户分配一个共享的bean;
任何一个用户对自己application bean的属性的改变,都会影响到其他的用户(不同Web服务目录的application bean互不相同)
举例:
3、
用于设置和访问Bean的属性
设置为一个表达式的值或字符序列
//value给出的值的类型要和bean的属性的类型一致
通过表单的参数的值来设置Bean的相应属性的值
//1、用表单的所有参数的值设置bean相对应的属性值
//要求Bean属性名必须在表单中有名称相同的参数名字相呼应
//Tomcat服务器会自动将参数的字符串值转换为Bean的相对应的属性的值
//2、用表单的某个参数的值设置bean的某个属性值
4、
获取Bean的属性值,并将这个值以串的形式发送给用户的浏览器
当JSP页面使用getProperty标记获取属性xxx的值时,必须保证bean有相应的getXxx方法,即对方法的名字的命名有特殊的要求
让request调用setCharacterEncoding方法设置编码为utf-8,以避免显示bean的属性值出现乱码现象
四、例子
举例一
登陆系统
求三角形的面积
package javabean.data;
public class Triangle {
private double a,b,c,s;
private boolean ok;
public boolean isOk() {
if(a+b>c && a+c>b && b+c>a){
ok=true;
}
return ok;
}
public double getS() {
if(ok){
double p=(a+b+c)/2;
s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
return s;
}
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public double getC() {
return c;
}
public void setC(double c) {
this.c = c;
}
}
注册系统
package javabean.data;
public class UserRegisterBean {
private String name,sex,adress;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}