1.bean法则
JavaBean和企业JavaBean是完全不相干的两个东西。普通的非企业JavaBean需要满足一定的规范才能被JSP和servlet使用:
1)必须有一个无参数的公共构造函数;
2)必须按命名约定来命名公共的获取方法和设置方法;
3)设置方法的参数类型和获取方法的返回类型必须一样;
4)性质名和类型是由获取方法和设置方法得出,而不是得自于类的一个成员;
5)结合JSP使用时,性质类型必须是String或者其他基本类型,否则还是要使用脚本;
2.为什么使用标准动作
通过使用标准动作,可以消除JSP中的所有脚本代码,标准动作会使JSP更简单。
例如在servlet中设置了一个person属性:
使用bean标准动作对web页面设计人员的意义比对java程序员的意义更重大,他们不需要了解底层的只是,可以把bean想成是包含字段的记录,而且使用标准动作比使用脚本更容易维护。
3.<jsp:useBean>用法
声明和初始化一个bean属性
如果使用<jsp:useBean>在scope中找不到属性对象,它就会创建一个,scope默认为page。
设置bean的属性值
如果把<jsp:setProperty>放在<jsp:useBean>的体中,只有在创建新bean时才会设置属性值。如果发现对于制定的scope和id已经有一个bean,就不会运行体中的set方法重置这个属性。
得到bean的属性值
bean的多态引用
可以使用<jsp:useBean>建立多态的bean引用,其中type指定引用类型,class为对象类型。如果使用了type,但没有class,bean必须已经存在,否则,即使type设置为具体的对象类型,容器还是假定只有引用类型,没有对象类型,会报错无法初始化person对象。
向bean发送请求参数
可以使用<jsp:setProperty>的param属性向bean发送请求参数,设置bean的属性,只需指定请求参数
还可以这样
如果请求参数名与bean属性名匹配,就不需要在<jsp:setProperty>标记中为该性质指定值
甚至还可以这样
bean标记会自动转换基本类型的性质,不用自己来完成解析和转换。但是如果使用脚本,bean不会完成String 到基本类型的转换: