首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JSP第三篇JavaBean的介绍、JSP的行为-JavaBean

什么是javaBean

JavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想

JavaBean遵循着特定的写法,通常有以下的规则:

有无参的构造函数

成员属性私有化

封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法

上面的文字看起来好像很高大上,javaBean其实非常简单,下面的代码就是按照特定写法、规则编写的一个JavaBean对象

publicclassPerson{

privateStringusername;

privateintage;

publicPerson(){

}

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

}

为什么需要使用Javabean

使用javaBean的好处就是:封装,重用,可读

下面引用知乎一段回答:

JaveBean你可以理解为一辆货车,在你的java端和web页面进行数据传递的载体,你当然可以每个变量单独传递,或者使用集合传递,但是javabean可以使你的数据更有可读性,方便开发时明确变量的意义,也使其他阅读你代码的人能直接你的意图如果把bean类与数据库联合使用,一张表使用bean类,可以使你的代码更加简洁高效,易于理解,现在大多数框架都会使用这种机制。JSP行为--JavaBean

JSP技术提供了三个关于JavaBean组件的动作元素,即JSP行为(标签),它们分别为:

jsp:useBean【在JSP页面中查找javaBean对象或者实例化javaBean对象】

jsp:setProperty【设置javaBean的属性】

jsp:getProperty【获取javaBean的属性】

标签用于在指定的域范围内查找指定名称的JavaBean对象

存在则直接返回该JavaBean对象的引用

不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中

语法:

如果JSP不支持这个行为,我们要使用Person类是这样使用的

//new出对象

Personperson=newPerson();

person.setName("zhongfucheng");

System.out.println(person.getName());

%>

效果如下

我们使用就显得非常简洁,不用导包,不用new出对象

person.setName("zhongfucheng");

System.out.println(person.getName());

%>

也可以实现同样的效果:

有人可能会想,凭什么写一个这样的代码就可以创建出一个对象出来。

现在我把JavaBean中无参的构造函数改成有参的,我们看看会出现什么情况,出现异常了!

publicPerson(intage){

this.age=age;

}

内部原理是这样子的:

通过上面的代码我们也知道了为什么要有一个无参的构造函数!内部在new 对象的时候是没有传递参数进去的!

语法:

在语法上可分为4种模式

自动匹配

指定属性

指定参数【很少用】

指定内容【很少用】

当我们没有学习到时,我们获取表单的信息,然后导入到javaBean对象中是这样的一种情况:这是表单的页面代码

用户名:

年龄:

这是处理表单提交过来数据的jsp的代码

这是可以完成的,但是相对来说,比较麻烦!

我们来使用jsp:setProperty了来看看:

System.out.println(person.getAge());

%>

也可以完成,并且代码更少,功能更强大

代码更少可以直观看出来,为什么我说它功能更加强大呢?表单提交过来的数据都是字符串,在我们没有用jsp:setProperty前,我们存储设置int类型或其他非字符串类型的数据是需要强转的!但是jsp:setProperty不需要我们强转,它内部自动帮我们转换了

我们再来使用一下自动匹配来感受它的强大之处吧

System.out.println(person.getAge());

System.out.println(person.getName());

%>

我们再来看一下效果:

看到这里,有人可能会觉得好神奇:只要设置property的值就可以将表单传递过来的数据封装到JavaBean对象中了!这究竟是这样做到的???

细心的朋友会发现,JavaBean的属性名称和表单的name属性设置的名称是一模一样的

private String username ;

private int age;

用户名:

年龄:

如果我设置不一样还能不能用?我们试试:表单name属性的username改成是user

用户名:

我们再来看看还能不能把表单的数据完整地封装JavaBean对象中

我们可以发现:要想能够把表单带过来的数据成功封装到JavaBean对象上,名字要一致!也就是说:JavaBean属性名要和表单的name的名称一致

至于原理,它是通过反射来做的,调用了内省的方法!,我们看编译后的JSP就明白了。

语法:

该jsp行为十分简单,我们来使用一下就知道了。

效果:

原理如下

如果文章有错的地方欢迎指正,大家互相交流。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205G0FBB400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券