某jsp程序中声明使用javabean的语句如下

什么是javaBean

  • JavaBean就是一个普通的java类,也称之为简单java对象–POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想
  • JavaBean遵循着特定的写法,通常有以下的规则:
  • 有无参的构造函数
  • 成员属性私有化
  • 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法
  • 上面的文字看起来好像很高大上,javaBean其实非常简单,下面的代码就是按照特定写法、规则编写的一个JavaBean对象
public class Person { private String username ; private int age; public Person() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { 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的属性】

`jsp:useBean`

  • <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象
  • 存在则直接返回该JavaBean对象的引用
  • 不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中
  • 语法:
<jsp:useBean id="实例化对象的名称"  scope="保存范围"/>
  • 如果JSP不支持这个行为,我们要使用Person类是这样使用的
<%--这里需要导入Person类--%><%@ page import="domain.Person" %><%@ page cOntentType="text/html;charset=UTF-8" language="java" %><html><head> <title></title></head><body><% //new出对象 Person person = new Person(); person.setName("zhongfucheng"); System.out.println(person.getName());%></body></html>
  • 效果如下

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 我们使用就显得非常简洁,不用导包,不用new出对象
<%@ page cOntentType="text/html;charset=UTF-8" language="java" %><html><head> <title></title></head><body><jsp:useBean id="person"  scope="page"/><% person.setName("zhongfucheng"); System.out.println(person.getName());%></body></html>
  • 也可以实现同样的效果:

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 有人可能会想,凭什么写一个“这样的代码就可以创建出一个对象出来
  • 现在我把JavaBean中无参的构造函数改成有参的,我们看看会出现什么情况,出现异常了!
 public Person(int age) { this.age = age; }

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 内部原理是这样子的:

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

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

`jsp:setProperty`

  • 语法:
<jsp:setProerty name="对象名称" property="属性名" param="参数名" value="值">

  • 在语法上可分为4种模式
  • 自动匹配
  • 指定属性
  • 指定参数【很少用】
  • 指定内容【很少用】
  • 我们没有学习到<jsp:setProperty>时,我们获取表单的信息,然后导入到javaBean对象中是这样的一种情况
  • 这是表单的页面代码
<form action="/zhongfucheng/1.jsp" method="post"> 用户名:<input type="text" name="username"> 年龄:<input type="text " name="age"> <input type="submit" value="提交"></form>
  • 这是处理表单提交过来数据的jsp的代码
<jsp:useBean id="person"  scope="page"/><% int age = Integer.parseInt(request.getParameter("age")); person.setAge(age); System.out.println(person.getAge());%>
  • 这是可以完成的,但是相对来说,比较麻烦!

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 我们来使用了来看看:
<jsp:useBean id="person"  scope="page"/><%--指定属性名称为age--%><jsp:setProperty name="person" property="age"/><% System.out.println(person.getAge());%>
  • 也可以完成,并且代码更少,功能更强大

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 代码更少可以直观看出来,为什么我说它功能更加强大呢?表单提交过来的数据都是字符串,在我们没有用前,我们存储设置int类型或其他非字符串类型的数据是需要强转的!但是
  • 不需要我们强转,它内部自动帮我们转换了
  • 我们再来使用一下自动匹配来感受它的强大之处吧
<jsp:useBean id="person"  scope="page"/><%--property的值设置为*就代表自动匹配--%><jsp:setProperty name="person" property="*"/><% System.out.println(person.getAge()); System.out.println(person.getName());%>
  • 我们再来看一下效果:

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 看到这里,有人可能会觉得好神奇:只要设置property的值就可以将表单传递过来的数据封装到JavaBean对象中了!这究竟是这样做到的???
  • 细心的朋友会发现,JavaBean的属性名称和表单的name属性设置的名称是一模一样的
private String username ;private int age;用户名:<input type="text" name="username">年龄:<input type="text " name="age">
  • 如果我设置不一样还能不能用?我们试试:表单name属性的username改成是user
用户名:<input type="text" name="user">
  • 我们再来看看还能不能把表单的数据完整地封装JavaBean对象中

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 我们可以发现:要想能够把表单带过来的数据成功封装到JavaBean对象上,名字要一致!也就是说:JavaBean属性名要和表单的name的名称一致
  • 至于原理,它是通过反射来做的,调用了内省的方法!,我们看编译后的JSP就明白了。

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)


jsp:getProperty

  • 语法::<jsp:getProperty name=”对象名” property=”属性名”/>
  • 该jsp行为十分简单,我们来使用一下就知道了。
<%--使用<jsp:getProperty>输出--%><jsp:getProperty name="person" property="username"/><jsp:getProperty name="person" property="age"/>
  • 效果:

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

  • 原理如下

JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

原文链接:https://dwz.cn/kfJIwxxt

作者:Java3y

本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2022-11-26 10:29
下一篇 2022-11-26 10:35

相关推荐

  • 神舟十五号飞船返回时间和地点

    当清晨第一缕阳光唤醒巴丹吉林沙漠时,在太空“出差”180多天的3位航天员踏上了回家之路,已经在东风着陆场预定落点守候的搜救人员也开始忙碌起来。 6月4日6时33分,在现场人员的期盼…

    2023-07-04
  • 最让十二生肖开心的事情是什么呢

    人生不如意事十之八九,几乎每天都有不顺心的事情,忧愁烦恼自是剪不断理还乱。 那么,什么会让十二生肖最开心呢? 生肖鼠一一十二生肖之首 生肖鼠一向被人不待见,说他们斤斤计较,抠门,精…

    2022-11-20
  • 维度洁具,toto 智能卫浴

    随着人们物质生活水平的提升和经济的快速发展,越来越多的人对于生活的品质也有更高的要求。产品能否及时更新换代以满足广大消费者的需求已成为当前市场上不容回避且亟待解决的问题。近日,新华…

    2023-04-12
  • 八门神器免root版v3.8.7.1安卓版

    不知道还有多少人认得这个图标 没错,这个就是曾经风靡一时的手机客户端游戏修改器,八门神器。2012年我还在读高中的时候,在淘宝花了2000元入手了一部美版16G的iphone4,从…

    2023-01-28
  • 高考时间意思

    [微风][微风]5月7日上午,在上海疫情防控工作新闻发布会上,副市长陈群宣布,鉴于疫情防控形势,决定将上海市秋季高考时间延期至7月7日至9日。 [微风][微风]其主要原因,是想多给…

    2022-11-16
  • 推荐8本好看的重生都市流小说,10本巅峰重生类小说推荐

    暖阳带你看好书,今天给大家推荐的是,三本通宵熬夜也要看完的都市重生类小说,高人气高质量,书荒必备! 在网文界,除了玄幻,都市就是最受欢迎的类型,在都市类的话,那就是重生最牛,也是热…

    2023-03-27
  • 兰州的水烟是什么样子(兰州水烟)

    兰州水烟 兰州水烟又称九叶芙香草,属黄花烟种。三国时隐士孟节献烟草给诸葛亮,用以治疗瘴气患者。后来诸葛亮六出祁山时,烟草辗转传入甘肃,并广泛种植于兰州、榆中、皋兰、靖远、永登、永靖…

    2023-03-06
  • 常用标点符号的用法大全书籍(最新常见标点符号归纳及书写规范)

    阅读提示:纯干货内容,预计阅读时间11分钟,建议先收藏~文末有下载链接~ 书写规范 【点号书写】 点号(句号、问号、感叹号、逗号、顿号、分号、冒号)占一格,写在方格的左方,不出现在…

    2023-03-09
  • 三叉戟-电视剧-全集在线观看-看剧窝

    由马珂担任制片人,刘海波执导,沈嵘、吕铮担任编剧的电视剧《三叉戟》将于今晚(23日)正式收官。该剧由实力派演员陈建斌、董勇、郝平领衔主演,何杜娟、徐绍瑛、胡可、王骁主演,巫刚、陶红…

    2022-12-16
  • 西安美术学院院校代码

    西安美术学院,位于陕西省西安市,今天让我们来看看这所院校的前世今生。 1948年,成立西北军政大学艺术学校,1949年改为西北军政大学艺术学院,1953年更名为西北美术专科学校,1…

    2022-12-01