JSP 最强有力的一个方面就是能够使用 JavaBean 组件。 按照 Sun 公司的定义, JavaBean是一个可重复使用的软件组件。实际上 JavaBean 是一种 Java 类,通过封装属性和方法成为具有某种功能或者处理某些业务的对象,简称 Bean。

一个基本的 JSP 页面由静态的 HTML 标签和 Java 脚本组成,如果 Java脚本和 HTML 标签大量掺杂在一起,就显得页面混杂,不易维护。 JSP 页面应当将数据的处理过程指派给一个或者几个 Bean 来完成,而在 JSP 页面中调用 JavaBean。不提倡大量的数据处理都用 Java 脚本来完成。 JSP 页面中调用 JavaBean,可有效地分离静态工作部分和动态工作部分,实现业务逻辑和表现形式的分离。 JavaBean 负责业务逻辑的处理, JSP 负责页面的展示,如图 5–1 所示。

JavaBean 简介

JavaBean 的特点
可以实现代码的重复利用。
易编写、 易维护、易使用。
可以在任何支持 Java 的平台上工作,而不需要重新编译。
可以通过网络传输。
可以与其他 Java 类同时使用。
JavaBean 的应用范围
JavaBean 传统的应用在于可视化领域,如 AWT(抽象窗口工具集)和 Swing 下的应用。现在, JavaBean 更多的应用在于非可视化领域,它在服务器端应用方面表现出了越来越强的生命力。非可视化的 JavaBean 和可视化的 JavaBean 同样使用属性和事件。非可视化的JavaBean 在 JSP 程序中常用来封装业务逻辑、数据库操作等,可以很好地实现业务逻辑和前台页面的分离,使得系统具有更好的健壮性和灵活性。注意: JavaBean 和 EJB( Enterprise JavaBean)的概念是完全不同的。

编写 JavaBean 遵循的原则

编写 JavaBean 就是编写一个 Java 的类,所以只要学会写类就能编写一个 JavaBean,这个类创建的一个对象称之为 JavaBean。为了让使用 JavaBean 的应用程序构建工具(比如 JSP引擎)知道这个 Bean 的属性和方法, JavaBean 的类需要遵守以下规则:
1、必须具备一个零参数的构造方法,显式地定义这样一个构造方法或者省略所有的构造方法都能满足这项要求。
2、成员变量也称为属性, JavaBean 不应该有公开的成员变量,使用存取方法读取和修改属性, 而不允许对字段直接访问。 属性的名字建议以小写英文字母开头。
3、属性的值通过 getXxx()和 setXxx()方法来访问。如果类有 String 类型的属性 title,读取 title 的方法是返回 String 的 getTitle(), 修改 title 的方法是 setTitle(String title)。
4、布尔型的属性的读取方法可以使用 getXxx(),也可以使用 isXxx()。
5、JavaBean 需要声明在包里面, package 保留字给类起一个包名。

举个例子:

package com.wuyudong;public class User {private String userName;private String password;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

诀窍: Eclipse 可以帮助我们生成 getter 和 setter 方法,右键 Source→ Generate  Getters and Setters

<jsp:useBean>

JSP 页面中可以<jsp:useBean>动作元素在 JSP 页面中使用 JavaBean 对象,这样就可以将大部分业务处理逻辑封装在 JavaBean

<jsp:useBean>动作元素用来在 JSP 页面中获取或者创建一个 JavaBean 对象,并指定它的名字和作用范围。 JSP 容器确保 JavaBean 对象在指定的范围内可以使用。 <jsp:useBean>的语法格式如下:
<jsp:useBean id="beanName" class="package.BeanClassName" scope="page | request | session | application"/>

当服务器上某个含有<jsp:useBean>动作元素的 JSP 页面被加载执行时, JSP 引擎首先根据 ID 给出的 JavaBean 的名字( beanName),在 scope 范围对应的 JSP 内部对象上查找是否有这个名字的属性( Attribute)。如果在指定范围内找到了与 beanName 同名的属性, JSP 引擎返回属性对应的对象的引用。如果没有在指定的范围内找到与 beanName 同名的属性, JSP引擎根据 class 属性给出的包名和类名,创建一个该类的对象, 并将该对象作为属性名为beanName 的一个属性的值,绑定到 scope 范围对应的 JSP 内部对象上。由于 pageContext对象可以操作各个范围的属性,实际上 JavaBean 的查找和绑定都是通过 pageContext 对象来完成的。 如果没有指定 JavaBean 的范围,默认范围是 page。

实战一下:

JavaBean

package com.wuyudong;public class Bean {private String name;public String getName() {return name + " 的JavaBean程序!";}public void setName(String name) {this.name = name;}
}

index.jsp

<jsp:useBean id="bean" class="com.wuyudong.Bean"></jsp:useBean>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%bean.setName("wuyudong");%><h1 align="center"><%=bean.getName()%></h1>
</body>
</html>

<jsp:setProperty>

<jsp:setProperty>动作元素用来设置 JavaBean 的简单属性和索引属性。 <jsp:setProperty>使用 JavaBean 的 setter 方法设置一个或多个属性的值。

<jsp:setProperty>可以使用 value 给出属性的取值, 取值可以是一个字符串,也可以是一个 JSP 表达式( <%= %>)。
<jsp:setProperty name="beanName" property="propertyName" value="propertyValue"/>

实战:

创建javabean对象

package com.wuyudong;public class Student {private int id;private int age;private String classes;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getClasses() {return classes;}public void setClasses(String classes) {this.classes = classes;}
}

创建form表单放在index.jsp中

<form action="student.jsp" method="post"><p>学号: <input type="text" name="id"></p><p>年龄: <input type="text" name="age"></p><p><input type="submit" value="提交"><input type="reset" value="重 置"></p></form>

<jsp:getProperty>

<jsp:getProperty>动作元素用来访问一个 JavaBean 的属性。访问的属性值将被转化成字符串,然后发送到输出流中。如果属性是一个对象,将调用该对象的 toString()方法。<jsp:getProperty>动作元素是通过调用 JavaBean 的 getter 方法获取属性的。
<jsp:getProperty name="beanName" property="propertyName"/>

注意: <jsp:getProperty>使用 name 属性给出 JavaBean 的名字,而<jsp:useBean>使用 id 属性给出 JavaBean 的名字,实际上它们是一致的,都是指绑定在特定范围对象的一个属性( Attribute)的名字。

实战一下:

创建JavaBean对象

package com.wuyudong;public class Book {private String bookName;private String author;private String category;private double price;public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

在index.jsp页面中对其操作

<body><!-- 实例化Book对象 --><jsp:useBean id="book" class="com.lyq.Book"></jsp:useBean><!-- 对Book对象赋值 --><jsp:setProperty name="book" property="bookName" value="《JAVA程序设计标准教程》"/><jsp:setProperty name="book" property="author" value="科技"/><jsp:setProperty name="book" property="category" value="Java图书"/><jsp:setProperty name="book" property="price" value="59.00"/><table align="center" border="1" cellpadding="1" width="350" height="100" bordercolor="green"><tr> <td align="right">图书名称:</td><td><jsp:getProperty name="book" property="bookName"/> </td></tr><tr> <td align="right">作 者:</td><td><jsp:getProperty name="book" property="author"/> </td></tr><tr> <td align="right">所属类别:</td><td><jsp:getProperty name="book" property="category"/> </td></tr><tr> <td align="right">价 格:</td><td><jsp:getProperty name="book" property="price"/> </td></tr></table></body>

转载于:https://www.cnblogs.com/wuyudong/p/jsp--javabean.html

JSP--JavaBean相关推荐

  1. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复 ...

  2. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  3. JSP JavaBean

    JSP JavaBean JavaBean是特殊的Java类,使用J ava语言书写,并且遵守JavaBean API规范. 接下来给出的是JavaBean与其它Java类相比而言独一无二的特征: 提 ...

  4. JSP+JavaBean+Servlet技术(MVC模型)

    一,Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这 ...

  5. JavaWeb开发模式:C/S模式,B/S模式,JSP+JavaBean模式,JSP+Servlet+JavaBean模式

    JavaWeb开发模式 1.C/S开发模式 1.C/S架构:客户端Client/服务端Server: a.出现较早,主要应用于局域网内: b.胖客户端:需要特定软件支持(安装客户端) 逻辑关系图如下: ...

  6. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  7. javaweb学习总结(二十二):基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  8. javaweb学习总结——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  9. 方立勋_30天掌握JavaWeb_(Servlet+JSP+JavaBean实现)用户注册和登陆

    JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据. Servlet+JSP+JavaBean(M ...

  10. 方立勋_30天掌握JavaWeb_(JSP+JavaBean实现)简单计算器

    JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据. Servlet+JSP+JavaBean(M ...

最新文章

  1. swoole实现数据库连接池
  2. Thread 同步线程(打印机同步)
  3. [deviceone开发]-日程日历示例
  4. 直击微软MIX11 聚焦IE10、Silverlight5、WP7
  5. IMXRT 分散加载文件 修改OCRAM,DTCM、ITCM大小
  6. Ubuntu安装PostgreSQl
  7. java实现愤怒的小鸟游戏
  8. 为什么TypedReference在幕后
  9. 北妈每日一题:如何甩锅给后端!
  10. SpringBoot三招组合拳,手把手教你打出优雅的后端接口
  11. javascrip中setTimeout和setInterval
  12. java invocationtarget,Java异常处理之java.lang.reflect.InvocationTargetException
  13. DB2 INTERSECT、EXCEPT、UNION集合操作测试
  14. 配置iSCSI部署网络存储
  15. 漂流瓶html5,微信又搞事情?漂流瓶下线,居然还有这些新功能...
  16. Mybatis开启日志
  17. C语言函数库之字符串拷贝函数(string.h)
  18. PandoraBox 路由器 IPv6穿透
  19. ArcGIS10.6基本操作——利用DEM给点赋予高程值
  20. 世界曾经有这样一个中国

热门文章

  1. 2022-2028年中国纤维增强聚合物行业市场调查研究及发展前景规划报告
  2. 【Sql Server】DateBase-结构化查询基础
  3. torch中的copy()和clone()
  4. FuzzyCMeans算法
  5. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积
  6. 图像实例分割:CenterMask
  7. 2021年大数据HBase(十五):HBase的Bulk Load批量加载操作
  8. 2021年大数据Flink(二十三):​​​​​​​Watermaker案例演示
  9. 2021年大数据Spark(三十五):SparkStreaming数据抽象 DStream
  10. Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.baidu.iov.dueros.film.ui