因工作需要 需要学习jsp方面的知识 这篇博客文章写得比较全面 我记录下:

一、什么是JavaBean

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

  • 这个Java类必须具有一个无参的构造函数
  • 属性必须私有化。
  • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。

javaBean范例:

 1 package gacl.javabean.study;2 3 /**4  * @author gacl5  * Person类就是一个最简单的JavaBean6  */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的属性

  JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
  属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。 
  属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。 
  一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

三、在JSP中使用JavaBean

  JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:

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

3.1、<jsp:useBean>标签

  <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。 
  常用语法:
    <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>标签使用范例:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2 <%--3 在jsp中使用jsp:useBean标签来实例化一个Java类的对象4 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>5     ┝<jsp:useBean>:表示在JSP中要使用JavaBean。6     ┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。7     ┝class:此对象对应的包.类名称8     ┝scope:此javaBean的保存范围,四种范围:page、request、session、application9 --%>
10 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
11 <%
12     //person对象在上面已经使用jsp:useBean标签实例化了,因此在这里可以直接使用person对象
13     //使用setXxx方法为对象的属性赋值
14     //为person对象的name属性赋值
15     person.setName("孤傲苍狼");
16     //为person对象的Sex属性赋值
17     person.setSex("男");
18     //为person对象的Age属性赋值
19     person.setAge(24);
20     //为person对象的married属性赋值
21     person.setMarried(false);
22 %>
23 <!DOCTYPE HTML>
24 <html>
25   <head>
26     <title>jsp:useBean标签使用范例</title>
27   </head>
28
29   <body>
30     <%--使用getXxx()方法获取对象的属性值 --%>
31     <h2>姓名:<%=person.getName()%></h2>
32     <h2>性别:<%=person.getSex()%></h2>
33     <h2>年龄:<%=person.getAge()%></h2>
34     <h2>已婚:<%=person.isMarried()%></h2>
35   </body>
36 </html>

  运行结果如下:

  

3.2、<jsp:useBean>执行原理

  上面我们在index.jsp中使用<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>实例化了一个gacl.javabean.study.Person类的对象,那么这个peson对象是怎么实例化出来的呢?index.jsp在执行的过程中首先会翻译成一个servlet,因此我们可以通过查看index.jsp页面生成的servlet的java代码来查看peson对象的实例化过程

  找到tomcat服务器下的"work\Catalina\localhost\项目名称\org\apache\jsp"这个目录,就可以看到将index.jsp页面翻译成servlet的java源码了,如下所示:

  

  使用文本编辑器打开index_jsp.java文件,在_jspService方法中可以看到person对象的创建过程,如下所示:

1      gacl.javabean.study.Person person = null;
2       synchronized (_jspx_page_context) {
3         person = (gacl.javabean.study.Person) _jspx_page_context.getAttribute("person", PageContext.PAGE_SCOPE);
4         if (person == null){
5           person = new gacl.javabean.study.Person();
6           _jspx_page_context.setAttribute("person", person, PageContext.PAGE_SCOPE);
7         }
8       }

  下面我们来分析一下上述生成的代码:

  首先是定义一个person对象,值是null

gacl.javabean.study.Person person = null;//定义一个空的person对象

  然后是使用pageContext对象的getAttribute方法获取存储在PageContext.PAGE_SCOPE域中的Person对象

person = (gacl.javabean.study.Person) _jspx_page_context.getAttribute("person", PageContext.PAGE_SCOPE);

  如果在PageContext.PAGE_SCOPE域中的Person对象没有找到person对象,那么就创建一个新的person对象,然后使用pageContext对象的setAttribute方法将新创建的person存储在PageContext.PAGE_SCOPE域中

if (person == null){person = new gacl.javabean.study.Person();_jspx_page_context.setAttribute("person", person, PageContext.PAGE_SCOPE);
}

  也就是说,在index.jsp中使用<jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>来实例化person对象的过程实际上是执行了上述的java代码来实例化Person对象。这就是<jsp:useBean>标签的执行原理:"首先在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

3.3、带标签体的<jsp:useBean>标签

语法:
    <jsp:useBean ...> 
        Body 
    </jsp:useBean> 
功能:
    Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。这种做法用得不多,了解一下即可

3.4、<jsp:setProperty>标签

  <jsp:setProperty>标签用于设置和访问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= "*" />
  name属性用于指定JavaBean对象的名称。 
  property属性用于指定JavaBean实例对象的属性名。
  value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。  
  param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

<jsp:setProperty>标签使用范例1:使用jsp:setProperty标签设置person对象的属性值

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

运行效果如下:

  

<jsp:setProperty>标签使用范例2:使用请求参数为bean的属性赋值

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2 <%--3 在jsp中使用jsp:useBean标签来实例化一个Java类的对象4 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>5     ┝<jsp:useBean>:表示在JSP中要使用JavaBean。6     ┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。7     ┝class:此对象对应的包.类名称8     ┝scope:此javaBean的保存范围,四种范围:page、request、session、application9 --%>
10 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
11
12 <%--
13     jsp:setProperty标签可以使用请求参数为bean的属性赋值
14     param="param_name"用于接收参数名为param_name的参数值,然后将接收到的值赋给name属性
15 --%>
16 <jsp:setProperty property="name" name="person" param="param_name"/>
17
18 <!DOCTYPE HTML>
19 <html>
20   <head>
21     <title>jsp:setProperty标签使用范例</title>
22   </head>
23
24   <body>
25       <%--使用getXxx()方法获取对象的属性值 --%>
26        <h2>姓名:<%=person.getName()%></h2>
27   </body>
28 </html>

运行结果如下:

  

<jsp:setProperty>标签使用范例3:用所有的请求参数为bean的属性赋值

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2 <%--3 在jsp中使用jsp:useBean标签来实例化一个Java类的对象4 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>5     ┝<jsp:useBean>:表示在JSP中要使用JavaBean。6     ┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。7     ┝class:此对象对应的包.类名称8     ┝scope:此javaBean的保存范围,四种范围:page、request、session、application9 --%>
10 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
11
12 <%--
13     jsp:setProperty标签用所有的请求参数为bean的属性赋值
14     property="*"代表bean的所有属性
15 --%>
16 <jsp:setProperty property="*" name="person"/>
17
18 <!DOCTYPE HTML>
19 <html>
20   <head>
21     <title>jsp:setProperty标签使用范例</title>
22   </head>
23
24   <body>
25     <%--使用getXxx()方法获取对象的属性值 --%>
26     <h2>姓名:<%=person.getName()%></h2>
27     <h2>性别:<%=person.getSex()%></h2>
28     <h2>年龄:<%=person.getAge()%></h2>
29   </body>
30 </html>

运行结果如下所示:

  

3.5、<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”的字符串。

范例:使用jsp:getProperty获取bean对象的属性值

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2 <%--3 在jsp中使用jsp:useBean标签来实例化一个Java类的对象4 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>5     ┝<jsp:useBean>:表示在JSP中要使用JavaBean。6     ┝id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。7     ┝class:此对象对应的包.类名称8     ┝scope:此javaBean的保存范围,四种范围:page、request、session、application9 --%>
10 <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
11
12 <%--
13 使用jsp:setProperty标签设置person对象的属性值
14 jsp:setProperty在设置对象的属性值时会自动把字符串转换成8种基本数据类型
15 但是jsp:setProperty对于复合数据类型无法自动转换
16 --%>
17 <jsp:setProperty property="name" name="person" value="白虎神皇"/>
18 <jsp:setProperty property="sex" name="person" value="男"/>
19 <jsp:setProperty property="age" name="person" value="24"/>
20 <jsp:setProperty property="married" name="person" value="false"/>
21 <%--
22 birthday属性是一个Date类型,这个属于复合数据类型,因此无法将字符串自动转换成Date ,用下面这种写法是会报错的
23 <jsp:setProperty property="birthday" name="person" value="1988-05-07"/>
24 --%>
25 <jsp:setProperty property="birthday" name="person" value="<%=new Date()%>"/>
26 <!DOCTYPE HTML>
27 <html>
28   <head>
29     <title>jsp:getProperty标签使用范例</title>
30   </head>
31
32   <body>
33     <%--使用jsp:getProperty标签获取对象的属性值 --%>
34     <h2>姓名:<jsp:getProperty property="name" name="person"/></h2>
35     <h2>性别:<jsp:getProperty property="sex" name="person"/></h2>
36     <h2>年龄:<jsp:getProperty property="age" name="person"/></h2>
37     <h2>已婚:<jsp:getProperty property="married" name="person"/></h2>
38     <h2>出生日期:<jsp:getProperty property="birthday" name="person"/></h2>
39   </body>
40 </html>

运行结果如下:

  

  关于JavaBean方面的内容基本上就这么多了,只需要掌握JavaBean的写法,以及掌握<jsp:useBean>标签,<jsp:setProperty>标签,<jsp:getProperty>标签的使用!

转载于:https://www.cnblogs.com/snowhite/p/10522751.html

什么是javabean及其用法(转)相关推荐

  1. 什么是javabean及其用法

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  2. JSP学习指南,JSTL表达式,EL表达式,JavaBean,常见问题收集

    目录 JSTL表达式 1.通用基本标签(set,out,remove) 2.条件标签 3.循环foreach的使用: 的EL表达式 1.基本用法 2.常用表达式 3.EL表达式操作集合 4.EL表达式 ...

  3. java中鼠标事件_java中检测鼠标事件动作

    精品视频课程推荐 Java数据结构和算法精讲版 本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上. 从零开始.全面系统.成体系的讲解数据 ...

  4. java 我爱你_Java初级教程-课程笔记

    精品视频课程推荐 Java Web开发理论部分视频教程 系统掌握开发实际的Java Web应用所需的理论知识和技能(Servlet.Jsp.JavaBean.TagLib.EL.JSTL.MVC模式. ...

  5. java教程+ppt

    一.Java基础必知必会 1.Java初级教程 http://sishuok.com/product/41 ppt下载:http://sishuok.com/forum/posts/list/1030 ...

  6. java中bean对象_JAVA中PO,BO,VO,DTO,POJO,Entity,JavaBean,JavaBeans各个对象的区别,以及lombo、jpa简介及用法...

    常见JAVA类概念介绍 PO:持久对象 (persistent object). 是ORM(Objevt Relational Mapping)框架中Entity,PO属性和数据库中表的字段形成一一对 ...

  7. Dorado用法与示例

    Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...

  8. JavaBean与表单处理

    6.1 非MVC模式(Model1) 6.1.1 单纯的JSP页面编程 定义:在单纯的JSP编程模式下,通过应用JSP中的脚本标志,可直接在JSP页面中实现各种功能. 优点:逻辑简单,容易理解 缺点: ...

  9. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  10. JSP笔记-JavaBean

    JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准.JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTM ...

最新文章

  1. python序列类型包括哪三种映射类型_python序列类型包括哪三种_后端开发
  2. 麻省理工和 IBM 合作创立 Watson AI 实验室,谨慎推进 AI 研究
  3. hadoop面试记录(一)
  4. [转]URLRewrite隐藏.aspx后缀名的应用(转载+延伸)
  5. 用CRF做命名实体识别——NER系列(三)
  6. 一款全新的基于IntelliJ和ReSharper的跨平台.NET IDE
  7. struts2-简单登录实现
  8. 恢复oracle中误删除delete的数据、drop掉的表
  9. CentOS7发布ASP.NET Core网站
  10. js中substr,substring,indexOf,lastIndexOf的用法小结
  11. 男女洗澡前后区别,太形象了!(文末送书)
  12. R语言数据分析笔记——方差分析(单因素方差分析、双因素方差分析、多因素方差分析)在Excel、SPSS、R语言中的操作)
  13. 获取时间戳的4种方法
  14. Ruckus 7372 Multimedia Hotzone Wireless AP 配置
  15. 串口转以太网通信源代码C语言C++编写支持多路转换双向通信支持UDP和TCP客户端
  16. html 带箭头的提示框,css实现对话框-带箭头提示框
  17. golang读取文件案例
  18. java word模版填充_Java 数据填充到word模板中
  19. 11.小白初学日记 STM32F429 HAL库 STM32程序启动过程
  20. 请牢记看小电影前一定要检查一下域名是不是 HTTPS 的,否则……

热门文章

  1. 从零开始学习Prometheus监控报警系统
  2. 武汉适合几月份去旅游 武汉必去景点
  3. 计算机教室的英语单词怎么写的,小学的英语单词怎么写
  4. OOK电路在电调天线远端控制器(RCU)中的应用
  5. (四)深度学习入门之对图像进行简单分类(cifar10数据集)
  6. Unity 3D 海水的实现1 海水网格的生成 LOD优化海水
  7. 公交线路查询接口使用说明
  8. 电脑重启f12怎么处理_电脑开机蓝屏按F10F11F12才能打开.怎么办?
  9. 电脑提示Wtautoreg.exe无法找到入口怎么解决?
  10. java.lang.UnsatisfiedLinkError解决方法