一、什么是JavaBean

  JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:

  • 这个Java类必须具有一个无参的构造函数
  • 属性必须私有化。
  • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范(get set方法)。
  • JavaBean除以上内容外,可以包含其他的逻辑语句。

javaBean范例:

 1 package gacl.javabean.study;
2
3 /**
4 * @author gacl
5 * Person类就是一个最简单的JavaBean
6 */
7 public class Person {
8
9 //------------------Person类封装的私有属性---------------------------------------
10 // 姓名 String类型
11 private String name;
12 // 性别 String类型
13 private String sex;
14 // 年龄 int类型
15 private int age;
16 //是否已婚 boolean类型
17 private boolean married;
18 //---------------------------------------------------------
19
20 //------------------Person类的无参数构造方法---------------------------------------
21 /**
22 * 无参数构造方法
23 */
24 public Person() {
25
26 }
27 //---------------------------------------------------------
28
29 //------------------Person类对外提供的用于访问私有属性的public方法---------------------------------------
30 public String getName() {
31 return name;
32 }
33
34 public void setName(String name) {
35 this.name = name;
36 }
37
38 public String getSex() {
39 return sex;
40 }
41
42 public void setSex(String sex) {
43 this.sex = sex;
44 }
45
46 public int getAge() {
47 return age;
48 }
49
50 public void setAge(int age) {
51 this.age = age;
52 }
53
54 public boolean isMarried() {
55 return married;
56 }
57
58 public void setMarried(boolean married) {
59 this.married = married;
60 }
61 //---------------------------------------------------------
62 }

  JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。

二、JavaBean的属性

  属性可以有多个,也可以是任意类型。修改器setter,访问器getter格式为  name属性---“setName”“getName”

三、在JSP中使用JavaBean

  JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:(调用,访问,修改)

  • <jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
  • <jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
  • <jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

<jsp:useBean>标签

  常用语法:
            <jsp:useBean id="beanName" class="package.class"scope="page|request|session|application"/>
外号"id"属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。
包名"class"属性用于指定JavaBean的完整类名(即必须带有包名)。
范围"scope"属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

<jsp:useBean>执行原理

<jsp:useBean>标签的执行原理:"首先在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

<jsp:setProperty>标签

<jsp:setProperty>标签用于设置和访问JavaBean对象的属性。

其中

name为类名,

property为属性名,

value为属性值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。

param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

  语法格式一:
    <jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>

  语法格式二:
    <jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />

  语法格式三:
    <jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>

  语法格式四:
    <jsp:setProperty name="beanName" property= "*" />

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--
在jsp中使用jsp:useBean标签来实例化一个Java类的对象
<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
┝<jsp:useBean>:表示在JSP中要使用JavaBean。
┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。
┝class:此对象对应的包.类名称
┝scope:此javaBean的保存范围,四种范围:page、request、session、application
--%>
<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/> <%--
使用jsp:setProperty标签设置person对象的属性值
jsp:setProperty在设置对象的属性值时会自动把字符串转换成8种基本数据类型
但是jsp:setProperty对于复合数据类型无法自动转换
--%>
<jsp:setProperty property="name" name="person" value="白虎神皇"/>
<jsp:setProperty property="sex" name="person" value="男"/>
<jsp:setProperty property="age" name="person" value="24"/>
<jsp:setProperty property="married" name="person" value="false"/>
<%--
birthday属性是一个Date类型,这个属于复合数据类型,因此无法将字符串自动转换成Date ,用下面这种写法是会报错的
<jsp:setProperty property="birthday" name="person" value="1988-05-07"/>
--%>
<jsp:setProperty property="birthday" name="person" value="<%=new Date()%>"/>
<!DOCTYPE HTML>
<html>
<head>
<title>jsp:setProperty标签使用范例</title>
</head> <body>
<%--使用getXxx()方法获取对象的属性值 --%>
<h2>姓名:<%=person.getName()%></h2>
<h2>性别:<%=person.getSex()%></h2>
<h2>年龄:<%=person.getAge()%></h2>
<h2>已婚:<%=person.isMarried()%></h2>
<h2>出生日期:<%=person.getBirthday()%></h2>
</body>
</html>

<jsp:getProperty>标签

<jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中。
  语法:
      <jsp:getProperty name="beanInstanceName" property="PropertyName" />
    name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。 
    property属性用于指定JavaBean实例对象的属性名。
  如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--
在jsp中使用jsp:useBean标签来实例化一个Java类的对象
<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
┝<jsp:useBean>:表示在JSP中要使用JavaBean。
┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。
┝class:此对象对应的包.类名称
┝scope:此javaBean的保存范围,四种范围:page、request、session、application
--%>
<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/> <%--
使用jsp:setProperty标签设置person对象的属性值
jsp:setProperty在设置对象的属性值时会自动把字符串转换成8种基本数据类型
但是jsp:setProperty对于复合数据类型无法自动转换
--%>
<jsp:setProperty property="name" name="person" value="白虎神皇"/>
<jsp:setProperty property="sex" name="person" value="男"/>
<jsp:setProperty property="age" name="person" value="24"/>
<jsp:setProperty property="married" name="person" value="false"/>
<%--
birthday属性是一个Date类型,这个属于复合数据类型,因此无法将字符串自动转换成Date ,用下面这种写法是会报错的
<jsp:setProperty property="birthday" name="person" value="1988-05-07"/>
--%>
<jsp:setProperty property="birthday" name="person" value="<%=new Date()%>"/>
<!DOCTYPE HTML>
<html>
<head>
<title>jsp:getProperty标签使用范例</title>
</head> <body>
<%--使用jsp:getProperty标签获取对象的属性值 --%>
<h2>姓名:<jsp:getProperty property="name" name="person"/></h2>
<h2>性别:<jsp:getProperty property="sex" name="person"/></h2>
<h2>年龄:<jsp:getProperty property="age" name="person"/></h2>
<h2>已婚:<jsp:getProperty property="married" name="person"/></h2>
<h2>出生日期:<jsp:getProperty property="birthday" name="person"/></h2>
</body>
</html>

参考大佬blog:https://www.cnblogs.com/xdp-gacl/p/3871730.html

咸鱼入门到放弃9--jsp中使用的JavaBean的更多相关文章

  1. 咸鱼入门到放弃11--Servlet+JSP+JavaBean开发模式

    本篇搬运了大佬blog:https://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servle ...

  2. 咸鱼入门到放弃7--jsp<二>jsp常用标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  3. 在JSP中如何使用JavaBean

    在JSP中使用JavaBean以后,可以实现HTML代码和Java代码的分离,是JSp更易于开发和维护.因此JavaBean成了JSP程序员必备的利器.虽然javaBean是java类,但是它也有自己 ...

  4. 咸鱼入门到放弃8--jsp<三>jsp内置对象

    NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequ ...

  5. 咸鱼入门到放弃12--Filter(过滤器)*

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  6. 咸鱼入门到放弃10--javaweb的两种开发模式

    (本篇是之前方法的综合使用,新东西不多,其中也涉及三层架构的问题.此处直接引用了大佬blog:https://www.cnblogs.com/xdp-gacl/p/3908610.html) SUN公 ...

  7. 咸鱼入门到放弃6--jsp<一>三指令

    JSP全称是Java Server Pages 它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比htm ...

  8. 咸鱼入门到放弃13--监听器(Listener)

    一.监听器介绍 1.1.监听器的概念

  9. 咸鱼入门到放弃5--Session和Cookie

    保存会话数据的两种技术 1.Cookie Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去. ...

随机推荐

  1. win10应用商店打不开,错误代码0x80131500

    我也突然遇到这个问题,一开始找各种方法也解决不了.然后在外网找到方法. 很多人只是把代理开了,只要关了就可以了.这点不累述,都会提到. 我的win10应用商店有两个错误代码0x80131500和0x8 ...

  2. Java【第十篇】集合

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组Java 集合可分为 Set.List ...

  3. Spring Cloud Data Flow 中的 ETL

    Spring Cloud Data Flow 中的 ETL 影宸风洛 程序猿DD 今天 来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据 ...

  4. macOS卸载应用不彻底

    总觉得macOS卸载应用时直接移到废纸篓卸载不干净.配置文件根据Unix的习惯应该存放在用户目录下,还需要删除这些文件. ~/Library/Application Support/(应用程序名称) ...

  5. Mycat的读写分离

    1. Mycat实现读写分离的部署: https://www.cnblogs.com/softidea/p/5447566.html springboot动态数据源的原理以及配置: Spring内置了 ...

  6. C++回顾day03---<类型转换>

    一:C++类型转换 (一)static_cast<>() 静态类型转换:基本类型可以转换但是指针类型不允许.可以进行隐式类型转换 double n=1.23 int m=static_ca ...

  7. windows下搭建vue开发环境+IIS部署

    原创]win10下搭建vue开发环境  https://www.cnblogs.com/ixxonline/p/6007885.html 特别说明:下面任何命令都是在windows的命令行工具下进行输 ...

  8. java Ajax跨域请求COOKIE无法带上的解决办法

    1.web.xml加入以下节点,,一定放在第一个filter <!--目录下所有文件可以跨域Begin--> <filter> <filter-name>CorsF ...

  9. mysql普通用户本机无法登录的解决办法

    背景 mysql和mariadb的用户表里存在匿名用户时,普通用户出现无法登录的情况 分析 先查看下用户表 mysql> select user, host, password from mys ...

  10. MapReduce Partition解析

    Map的结果,会通过partition分发到Reducer上,reducer操作过后会进行输出.输出的文件格式后缀000001就代表1分区. Mapper处理过后的键值对,是需要送到Reducer那边 ...