JavaBean
(1)POJO:没有继承或者实现接口,只用来收集数据
(2)表单bean
1、必须要有包声明(bean的字节码文件只有放在这个包对应的目录下才能被使用),体现了分包管理的原则
2、表单bean的类型名和文件名要相同,即public class,没有主方法,因为这个bean是web使用的,即tomcat使用,
如果有主方法,则是虚拟机使用了
3、表单bean的属性的个数,类型和属性名都要和form表单的参数个数类型和参数名一致,而不是相同(因为整型字符串可以自动转化
成int型,所以是一致而不是相同),并且,所有的表单bean的属性要隐藏,即属性要private
4、对每一个属性都要有get,set方法
5、一定要显示提供无参的构造方法,基本都是用无参的构造方法来创建对象,包括反射
(3)部署表单bean
字节码文件要放到Web-inf 下的classes (自己创建)目录下的包对应的目录下
1)可以自己创建classes文件,在当前目录下,通过打包编译(javac -d . SimpleBean.java)bean的java程序,
将打包编译的结果复制到classes目录下
(4)jsp页面使用bean
1)使用<%@page import="导包"%>,tomcat默认去web-inf下的classes下去找这个包对应的目录下找字节码文件
2)通过get,set方法来对属性进行操作
(5)命名规范
1)包命名:全部小写字母,用.代表不同层目录
2)类命名:单词的首字母大写,接口名也一样
3)属性名称:第一个单词的首字母小写,之后每一个单词的首字母大写,
4)方法命名:与属性命名相同
5)常量或者final类型的变量命名:全部单词大写,
(6)jsp的userBean标签
<jsp:userBean id="zs" scope="page" class="cn.zte.pxb.SimpleBean"/>
去page里面找属性名为zs的属性值,如果没有,就创建一个名为zs的属性,类型为SinpleBean类型,在page里面
if(page.getAttribute("zs")==null){
Page.setAttribute("zs",new SimpleBean());
SimpleBean zs=(SimpleBean)page.getAttribute("zs");
}
Zs.setName("tom");
Zs.setPassword("123456");
Zs.getName();
<jsp:userBean id="zs" scope="page" class="cn.zte.pxb.SimpleBean"/>先判断有没有名为zs的属性,没有就创建
<jsp:setProperty name="zs" property="*">
自动收集表单中的数据,同时封装到name为zs的simpleBean中,这样就可以自动收集表单中的数据了,前提条件是simpleBean中属性的个数,类型和属性名都要和form表单的参数个数类型和参数名相同
这里的name=‘zs’是指在page中的名为zs的属性,类型为SimpleBean类型的,和zs中的name是两个东西
<jsp:getProperty name="zs" property="name"/>//得到zs的name值
等价于$<zs.name>
(7)
-
如果表单bean中的个数,类型与表单参数不一致时
如果类型不一致时:表单中的所有参数都是string类型的,如果Bean中的参数有一个是int型的
1)如果age在表单中是整型字符串,则可以转化成int型
2)如果age在表单中是23abc,则如果转成int型,则会报错
所以,如果两个参数的类型是一致的,是可以转化的,如果参数类型不一致,则会报错 -
如果个数不一样时
在表单中,如果少了age这个输入框,则收集表单时,age=null,则不会将null赋值给表单bean中的属性,则会保持创建bean对象时的原值0(在创建表单bean时,在堆中开辟空间,String name=null;String password=null;int age=0)
所以,如果参数个数不一样,就直接将表单中收集的参数赋值给bean中的属性,没有的就保持创建对象时的原值