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

小编 2026-06-27 阅读:819 评论:0
什么是javaBeanJavaBean就是一个普通的java类,也称之为简单java对象--PO...

什么是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="实例化对象的名称" class="类的全名" scope="保存范围"/>
  • 如果JSP不支持<jsp:useBean>这个行为,我们要使用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】

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

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

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

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

  • <jsp:useBean id="person" class="domain.Person" scope="page"/>内部原理是这样子的:

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" class="domain.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" class="domain.Person" scope="page"/>    <%--指定属性名称为age--%>    <jsp:setProperty name="person" property="age"/>    <%        System.out.println(person.getAge());    %>
  • 也可以完成,并且代码更少,功能更强大

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

  • 代码更少可以直观看出来,为什么我说它功能更加强大呢?表单提交过来的数据都是字符串,在我们没有用!但是
  • 我们再来使用一下自动匹配来感受它的强大之处吧
    <jsp:useBean id="person" class="domain.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行为十分简单,我们来使用一下就知道了。
    <%--使用<jsp:getProperty>输出--%>    <jsp:getProperty name="person" property="username"/>    <jsp:getProperty name="person" property="age"/>
  • 效果:

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

  • 原理如下

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


如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章的同学,可以关注微信公众号:Java3y

更多的文章可往:文章的目录导航
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

上一篇:实现SRCNN 下一篇:IDEA常用快捷键列表
热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表