资讯专栏INFORMATION COLUMN

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

刘德刚 / 533人阅读

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

什么是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页面中查找javaBean对象或者实例化javaBean对象】

【设置javaBean的属性】

【获取javaBean的属性】

jsp:useBean

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

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

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

语法:

    

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

    <%--这里需要导入Person类--%>
    <%@ page import="domain.Person" %>

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        
    
    
    
    
    <%
        //new出对象
        Person person = new Person();

        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>
    
    
    

效果如下

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

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        
    
    
    
    
    <%
        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>
    
    

也可以实现同样的效果:

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

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

     public Person(int age) {
            this.age = age;
        }

内部原理是这样子的:

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

jsp:setProperty

语法:

    

在语法上可分为4种模式

自动匹配

指定属性

指定参数【很少用】

指定内容【很少用】

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

这是表单的页面代码

    
用户名: 年龄:

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


    
    <%
        int age = Integer.parseInt(request.getParameter("age"));
        
        person.setAge(age);
    
        System.out.println(person.getAge());
        
    %>

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

我们来使用了来看看:

    

    <%--指定属性名称为age--%>
    
    <%
        System.out.println(person.getAge());
    %>

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

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

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

    

    <%--property的值设置为*就代表自动匹配--%>
    
    <%
        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:getProperty

语法:

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

    <%--使用输出--%>
    
    

效果:

原理如下

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68467.html

相关文章

  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • JSP面试题都在这里

    摘要:下面是我整理下来的知识点图上的知识点都可以在我其他的文章内找到相应内容。在中,尤其重要的是对象。 下面是我整理下来的JSP知识点: showImg(https://segmentfault.com/img/remote/1460000013229216?w=4962&h=2653); 图上的知识点都可以在我其他的文章内找到相应内容。 JSP常见面试题 jsp静态包含和动态包含的区别 j...

    gaosboy 评论0 收藏0
  • JSP 学习记录

    摘要:对象具有请求域,即完成客户端的请求之前,该对象一直有效。提交的数据量最多不超过。安全性较低但效率比方式高。适合提交数据量大,安全性高的用户信息。除非本次会话的所有页面都关闭后再重新访问某个或者,将会创建新的会话。 JSP 简介 全名为Java Server Pages,其根本是一个简化的Servlet设计,实现了在Java当中使用HTML标签。JSP是一种动态网页技术标准,也是Java...

    BearyChat 评论0 收藏0
  • Web开发模式【Mode I 和Mode II介绍、应用案例】

    摘要:开发模式的介绍在开发模式中,有两个主要的开发结构,称为模式一和模式二首先我们来理清一些概念吧主要对数据的操作,增加修改删除等原子性操作。 开发模式的介绍 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II). 首先我们来理清一些概念吧: DAO(Data Access Object):主要对数据的操作,增加、修改、删除等原子性操作。 Web层...

    longmon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<