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

JavaBean遵循特定的写法,有如下规则:

  • 有无参的构造函数
  • 成员属性私有化
  • 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法

编写一个JavaBean

public class Person {
    private String name;
    private int age;
    
    public Person(){
        
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

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

JavaBean可以理解为一辆货车,在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="保存范围"/>

先使用<%@page import="">

<%--这里是导入Person类--%>
<%@ page import="com.company.Person" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    //实例化一个Person对象
    Person person = new Person();
    person.setName("jerry");
    System.out.println(person.getName());
%>
</body>
</html>

后台结果显示:jerry

使用<jsp:usebean>非常简洁,不用导包,不用new出对象

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<jsp:useBean id="person" class="com.company.Person" scope="page"/>
<%
    person.setName("jerry");
    System.out.println(person.getName());
%>
</body>
</html>

后台显示结果:jerry

<jsp:usebean id="person" class="domain.Person" scope="page"/>内部原理:

当JavaBean中没有无参的构造函数,则会出现异常。

<jsp:setProperty>

 语法:

<jsp:setProperty name="对象名称" property="属性名" param="参数名" value="值">

在语法上可分为四种模式:

  • <jsp:setProperty name="对象名称" property="*"/>【自动匹配】
  • <jsp:setProperty name="对象名称" property="属性名称"/>【指定属性】
  • <jsp:setProperty name="对象名称" property="属性名称" param="参数名称"/>【指定参数(很少用)】
  • <jsp:setProperty name="对象名称" property="属性名称" value="内容"/>【指定内容(很少用)】

当没有学习<jsp:setProperty>时,获取表单的信息。

form.jsp(表单页面代码)

<form action="page.jsp" method="post">
    用户名:<input type="text" name="name"/><br/>
    年龄  :<input type="text" name="age"/><br/>
    <input type="submit" value="提交"/>
</form>

page.jsp(处理提交过来的数据)

<jsp:useBean id="person" class="com.company.Person"/>
<%
String name=(String)request.getParameter("name");
int age=Integer.parseInt(request.getParameter("age"));
person.setName(name);
person.setAge(age);
System.out.println(person);
%>

显示结果:Person{name='jerry', age=23}

使用<jsp:setProperty>

<jsp:useBean id="person" class="com.company.Person"/>
<jsp:setProperty name="person" property="name"/>
<jsp:setProperty name="person" property="age"/>
<%
System.out.println(person);
%>

显示结果:Person{name='jack', age=30}

使用自动匹配

<jsp:useBean id="person" class="com.company.Person"/>
<jsp:setProperty name="person" property="*"/>
<%--<jsp:setProperty name="person" property="name"/>
<jsp:setProperty name="person" property="age"/>--%>
<%
System.out.println(person);
%>

显示结果:Person{name='Lebron', age=32}

表单的name属性值跟JavaBean的属性名称要保持一致,否则不能将表单带过来的数据成功封装到JavaBean对象上。因为它是通过反射来做的,调用了内省的方法。

<jsp:getProperty>

语法:

<jsp:getProperty name="对象名称" property="属性名称"/>
<jsp:getProperty name="person" property="name"/>
<jsp:getProperty name="person" property="age"/>

原理:

 

 posted on 2019-06-17 23:16  会飞的金鱼  阅读(77)  评论(0)    收藏  举报