JSP与JavaBean

JSP与JavaBean

目录

一、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;

}

}

相关推荐

摩洛哥世界杯名单:齐耶赫、阿什拉夫领衔
365bet足球即时比分网

摩洛哥世界杯名单:齐耶赫、阿什拉夫领衔

📅 07-01 👁️ 8318
哇哦!2022年各省女生长相评分表!哪个地方的最美?
365bet足球即时比分网

哇哦!2022年各省女生长相评分表!哪个地方的最美?

📅 07-04 👁️ 7777