博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaBean基础学习总结
阅读量:5308 次
发布时间:2019-06-14

本文共 7613 字,大约阅读时间需要 25 分钟。

学习目标:

  • 掌握JavaBean的基本定义格式。
  • 掌握Web目录的标准结构。
  • 掌握JSP中对JavaBean支持的三个标签,即<jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>。

一.JavaBean的基本定义格式:

  • JavaBean的优点:可将Html和java代码分离,对日后代码维护带来方便,在开发过程中将常用的程序写成JavaBean组件,当JSP使用时,只需要调用JavaBean组件来执行用户所需要的功能即可,不用重复编写代码,节省开发时间。
  • 在JSP开发过程应用JavaBean的标签操作java程序是,对java程序类的要求:

    1.所以的类必须声明为public class,这样才可以被外部所访问。

    2.类中所有属性都必须封装,即使用private声明。

    3.封装的属性必须编写setter,getter方法。

    4.一个JavaBean至少有一个无参的构造方法。

如下代码:

package org.lxh.JavaBean;public class JavaBeanDemo {	private String name;//封装属性	private int age;	public JavaBeanDemo(){//无参构造方法			}	public void setName(String name){//属性修改器,setter方法		this.name=name;	}	public void setAge(int age){		this.age=age;	}	public String getName(){//属性的访问器,getter方法		return this.name;	}	public int getAge(){		return this.age;	}}

二.web目录的标准结构图:

三.JSP中支持的三个JavaBean标签:

  • <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>标签使用实例代码:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--在jsp中使用jsp:useBean标签来实例化一个Java类的对象
:表示在JSP中要使用JavaBean。 id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。 class:此对象对应的包.类名称 scope:此javaBean的保存范围,四种范围:page、request、session、application--%>
<% //person对象在上面已经使用jsp:useBean标签实例化了,因此在这里可以直接使用person对象 //使用setXxx方法为对象的属性赋值 //为person对象的name属性赋值 person.setName("小小高"); //为person对象的Sex属性赋值 person.setSex("男"); //为person对象的Age属性赋值 person.setAge(21);%>
jsp:useBean操作实例 <%--使用getXxx()方法获取对象的属性值 --%>

姓名:<%=person.getName()%>

性别:<%=person.getSex()%>

年龄:<%=person.getAge()%>

  

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对象的创建过程。

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

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

  

  首先是定义一个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对象的属性值,代码如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--在jsp中使用jsp:useBean标签来实例化一个Java类的对象
:表示在JSP中要使用JavaBean。 id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。 class:此对象对应的包.类名称 scope:此javaBean的保存范围,四种范围:page、request、session、application--%>
<%--使用jsp:setProperty标签设置person对象的属性值jsp:setProperty在设置对象的属性值时会自动把字符串转换成8种基本数据类型但是jsp:setProperty对于复合数据类型无法自动转换--%>
<%--birthday属性是一个Date类型,这个属于复合数据类型,因此无法将字符串自动转换成Date ,用下面这种写法是会报错的
--%>
jsp:setProperty操作实例 <%--使用getXxx()方法获取对象的属性值 --%>

姓名:<%=person.getName()%>

性别:<%=person.getSex()%>

年龄:<%=person.getAge()%>

出生日期:<%=person.getBirthday()%>

  

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

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--在jsp中使用jsp:useBean标签来实例化一个Java类的对象
:表示在JSP中要使用JavaBean。 id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。 class:此对象对应的包.类名称 scope:此javaBean的保存范围,四种范围:page、request、session、application--%>
<%-- jsp:setProperty标签可以使用请求参数为bean的属性赋值 param="param_name"用于接收参数名为param_name的参数值,然后将接收到的值赋给name属性--%>
jsp:setProperty操作实例 <%--使用getXxx()方法获取对象的属性值 --%>

姓名:<%=person.getName()%>

  

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--在jsp中使用jsp:useBean标签来实例化一个Java类的对象
:表示在JSP中要使用JavaBean。 id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。 class:此对象对应的包.类名称 scope:此javaBean的保存范围,四种范围:page、request、session、application--%>
<%-- jsp:setProperty标签用所有的请求参数为bean的属性赋值 property="*"代表bean的所有属性--%>
jsp:setProperty标签使用范例 <%--使用getXxx()方法获取对象的属性值 --%>

姓名:<%=person.getName()%>

性别:<%=person.getSex()%>

年龄:<%=person.getAge()%>

  

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对象的属性值,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--在jsp中使用jsp:useBean标签来实例化一个Java类的对象
:表示在JSP中要使用JavaBean。 id:表示生成的实例化对象,凡是在标签中看见了id,则肯定表示一个实例对象。 class:此对象对应的包.类名称 scope:此javaBean的保存范围,四种范围:page、request、session、application--%>
<%--使用jsp:setProperty标签设置person对象的属性值jsp:setProperty在设置对象的属性值时会自动把字符串转换成8种基本数据类型但是jsp:setProperty对于复合数据类型无法自动转换--%>
<%--birthday属性是一个Date类型,这个属于复合数据类型,因此无法将字符串自动转换成Date ,用下面这种写法是会报错的
--%>
jsp:getProperty操作实例 <%--使用jsp:getProperty标签获取对象的属性值 --%>

姓名:

性别:

年龄:

出生日期:

  

 

转载于:https://www.cnblogs.com/x-ll123/p/7279913.html

你可能感兴趣的文章
Redis sentinel & cluster 原理分析
查看>>
我的工作习惯小结
查看>>
把word文档中的所有图片导出
查看>>
浏览器的判断;
查看>>
ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
zabbix监控日志文件
查看>>
正则表达式
查看>>
pip install torch on windows, and the 'from torch._C import * ImportError: DLL load failed:' s...
查看>>
环套树
查看>>
java基础(一):我对java的三个环境变量的简单理解和配置
查看>>
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
YTU 2625: B 构造函数和析构函数
查看>>
apache自带压力测试工具ab的使用及解析
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>