一、概述

  JavaBean组件本质上是一个Java类,只是这个类的编码要遵循一些约定。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。本文将对JavaBean涉及的知识点和基本用法进行简单的总结。

二、什么是JavaBean?

  JavaBean 是一种JAVA语言写成的可重用组件,本质上是一个类,具有以下特性:

  • 它是一个public类型的类,属性则为private类型的,通过public的方法暴露给其它程序
  • 必须具有一个无参的构造函数
  • 提供setXXX()方法和getXXX()方法让外部程序设置和获取JavaBean属性

  一个JavaBean主要由三个部分组成:

  1. 属性:是JavaBean组件内部状态的抽象表示
  2. 方法:就是通常的Java方法,默认情况下所有的方法都可以被外部调用
  3. 事件:Bean与其他软件组织交流信息的主要方式是发送和接收事件

  下面代码为一个典型的JavaBean:

package com.test;

public class Person
{
private String name="aaa";
private int age;
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的使用

  在JSP中可以像使用普通类一样访问JavaBean,在脚本元素中实例化类的对象,调用对象的方法,并提供了三个动作元素来访问JavaBean。

  <jsp:useBean>:用于实例化JavaBean或者定位一个已经存在的JavaBean,并把实例的引用赋值给一个变量。

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<title>在此处插入标题</title>
</head>
<body>
<jsp:useBean id="person" class="com.test.Person" scope="page"/>
<%=person.getName() %>
</body>
</html>

  <jsp:setProperty>:和<jsp:userBean>一起使用用来设置JavaBean的属性。

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<title>在此处插入标题</title>
</head>
<body>
<!-- userbean标签的标签提只在userbean标签实例化bean时使用-->
<jsp:useBean id="person" class="com.test.Person" scope="page"/> <jsp:setProperty property="name" name="person" value="xujian"/>
<%=person.getName() %>
</body>
</html>

  还可以通过param指定请求对象中参数的名字:

<jsp:setProperty property="name" name="person" param="name"/>

  在浏览器中输入http://localhost:8080/day_0623/1.jsp?name=songji,页面会显示属性name的值:songji。

  <jsp:getProperty>:用来访问一个Bean的属性,并把属性的值转化成一个String,然后发送到输出流中

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<title>在此处插入标题</title>
</head>
<body>
<!-- userbean标签的标签提只在userbean标签实例化bean时使用-->
<jsp:useBean id="person" class="com.test.Person" scope="page"/> <jsp:setProperty property="name" name="person" value="wangjian"/> <jsp:getProperty property="name" name="person"/>
</body>
</html>

  查看jsp转化的Servlet文件(文件目录:\workSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\work\Catalina\localhost\day_0623\org\apache\jsp)

 com.test.Person person = null;
synchronized (_jspx_page_context) {
person = (com.test.Person) _jspx_page_context.getAttribute("person", PageContext.PAGE_SCOPE);
if (person == null){
person = new com.test.Person();
_jspx_page_context.setAttribute("person", person, PageContext.PAGE_SCOPE);
}
}
out.write("\r\n");
out.write("\t\t\r\n");
out.write("\t\t");
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "name", "wangjian", null, null, false);
out.write("\r\n");
out.write("\t\t\r\n");
out.write("\t\t");
out.write(org.apache.jasper.runtime.JspRuntimeLibrary.toString((((com.test.Person)_jspx_page_context.findAttribute("person")).getName())));
out.write("\r\n");
out.write("\t</body>\r\n");

  可以看到,<jsp:getProperty property="name" name="person"/>这是转换成上述代码红字体部分,调用了Person类的getName方法,如果该属性没有定义该方法则会报错。

浅析JavaBean的更多相关文章

  1. JavaBean与EJB的区别与应用

    JavaBean 是一种组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的 bean 可以询问和集成. EJB 是部署在服务器上的可执行组件或商业对象.有一个协议允许对其进行远程访问或 ...

  2. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  3. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  4. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  5. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  6. Jvm 内存浅析 及 GC个人学习总结

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  7. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  8. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  9. java web学习总结(二十九) -------------------JavaBean的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

随机推荐

  1. python3 实现mysql数据库连接池

    首先声明一下,这篇博客进行了通过自己的代码方式,加上这篇博客,最后总结出这段代码.参考博客连接:http://blog.csdn.net/zbc1090549839/article/details/5 ...

  2. Android ListView实现单击item出现删除按钮以及滑动出现删除按钮

    我自己一个人弄的公司的产品客户端,所以还是想记录下来以免忘记或者丢失... 在我的上一篇博文(点击打开链接)是一个文件管理的东西,基础组件也是ListView所以在此只是改动一下而已. 单击: 点击出 ...

  3. Lamp后端开发技能表v0.1(转)

    专业技能 Linux 阿里云服务器免费购买 服务器环境搭建 常用命令:慕课网-Linux达人养成计划 编辑器vim:床用命令.模式等等 shell Apache/Nginx 环境配置 一些配置项的参数 ...

  4. jQuery table td可编辑

    参考链接: http://www.freejs.net/ http://www.freejs.net/article_biaodan_34.html http://www.freejs.net/sea ...

  5. WEB网页监控系统的设计框架思路具体解释

    提示:也能够直接在LCD上显示摄像头数据.这个參考luvcview源代码.设计思路思将YUV或者MJPEG格式的数据转换成RGB格式的数据,然后实现图片的缩放,图像缩放算法:点击这里!,然后写到fra ...

  6. 每天一个linux命令: /etc/group文件详解

    Linux /etc/group文件与/etc/passwd和/etc/shadow文件都是有关于系统管理员对用户和用户组管理时相关的文件.linux /etc/group文件是有关于系统管理员对用户 ...

  7. CentOS 7 安装、配置、使用 PostgreSQL 10 安装及基础配置

    官网安装方法:https://www.postgresql.org/download/linux/redhat/ 卸载的话使用 yum remove 相应的安装 Install the reposit ...

  8. VueJs中 Class 与 Style 绑定

    绑定 HTML Class 尽管可以用 Mustache 标签绑定 class,比如 class="{{ className }}",但是我们不推荐这种写法和 v-bind:cla ...

  9. [linux]Error: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.

    在使用fedora17 系统的yum源的时候出现了例如以下错误: Error: failure: repodata/repomd.xml from fedora: [Errno 256] No mor ...

  10. HTTP Analyzer——WEB调试代理

    HTTP Analyzer 是一个实时的web调试代理,如果你对Fiddler不陌生的话,HTTP Analyzer 就是和Fiddler具备一样功能的调试代理. 推荐这个软件而不推荐Fiddler的 ...