JavaBean

1,什么是JavaBean

¨JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:
这个Java类必须具有一个无参的构造函数
属性必须私有化。
私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。
2,JavaBean的属性
¨JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
¨属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。
¨属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。
¨一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。
3,在JSP中使用JavaBean
¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:
¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
¨<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
¨<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。
<jsp:include>  <jsp:forwort>    <jsp:promer>

4,<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。
5,<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。
6,<jsp:useBean>执行原理

¨<jsp:useBeanid="currentDate" class="java.util.Date"/>
¨翻译成的Servlet源码:

java.util.Date currentDate = null;

synchronized (_jspx_page_context) {

  currentDate= (java.util.Date)           

                         _jspx_page_context.getAttribute("currentDate",PageContext.PAGE_SCOPE);

  if(currentDate == null){

  currentDate= new java.util.Date();

  _jspx_page_context.setAttribute("currentDate",

  currentDate,PageContext.PAGE_SCOPE);

  }

}

7,<jsp:setProperty>标签

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

<jsp:setPropertyname="beanName"

{

  property="propertyName"value="{string | <%= expression %>}" |

  property="propertyName" [param="parameterName" ] |

  property= "*"

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

¨语法:

  <jsp:useBean ...>

  Body

  </jsp:useBean>
¨功能:

  Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。
9,<jsp:getProperty>标签

¨<jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中。
¨语法:

  <jsp:getPropertyname="beanInstanceName" property="PropertyName" />
üname属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。
üproperty属性用于指定JavaBean实例对象的属性名。
¨如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。
10,JSP开发模式
¨SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式。
¨JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。

¨Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。


11,案例

1,UserBean.java

<%@ page language="java" import="java.util.*,www.youkuaiyun.com.blank.domain.Goods" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'usebean.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  <body>
        <!-- 往page域中存入一个good的对应的值 -->
        <%
          pageContext.setAttribute("good", new Goods());
         %>
 
       
       <!-- 去实例化它
          但:首先要去对应的域中查找该javabean组件对象,如果存在就不创建(及不会执行  hahahahha )
        -->
       <jsp:useBean id="good" class="www.youkuaiyun.com.blank.domain.Goods" scope="page">
          hahahahha
       </jsp:useBean>
       
       <!-- 赋值 -->
       <jsp:setProperty property="name" name="good" value="chenhj"/>
      <%--  <jsp:setProperty property="price" name="good" value="20"/> --%>
       <jsp:setProperty property="count" name="good" value="20"/>
       <%-- <jsp:setProperty property="age" name="good" value="20"/> --%>
      <%--  <jsp:setProperty property="createDate" name="good" value="<%=new Date() %>"/> --%>
 
      
 
        <!-- 显示值 -->
        <jsp:getProperty property="name" name="good"/><br/>
        <jsp:getProperty property="price" name="good"/><br/>
        <jsp:getProperty property="count" name="good"/><br/>
        <jsp:getProperty property="createDate" name="good"/>
        <jsp:getProperty property="age" name="good"/>
        
        
 
       
  </body>
</html>




2,Goods

package www.youkuaiyun.com.domain;

import java.util.Date;

public class Goods {
     private Integer id;
     private String name;
     private String img;
     private Integer count;
     private Date addDate;
     private int i;
    public int getI() {
        return i;
    }
    public void setI(int i) {
        this.i = i;
    }
    public Goods() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Goods(Integer id, String name, String img, Integer count,
            Date addDate) {
        super();
        this.id = id;
        this.name = name;
        this.img = img;
        this.count = count;
        this.addDate = addDate;
    }
    public Goods(Integer id, String name, String img, Integer count) {
        super();
        this.id = id;
        this.name = name;
        this.img = img;
        this.count = count;
    
    }
    public Goods(Integer id, String name, String img) {
        super();
        this.id = id;
        this.name = name;
        this.img = img;
    
    }
    public Goods(Integer id, String name) {
        super();
        this.id = id;
        this.name = name;
        
    
    }
    public Goods(Integer id) {
        super();
        this.id = id;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getImg() {
        return img;
    }
    public void setImg(String img) {
        this.img = img;
    }
    public Integer getCount() {
        return count;
    }
    public void setCount(Integer count) {
        this.count = count;
    }
    public Date getAddDate() {
        return addDate;
    }
    public void setAddDate(Date addDate) {
        this.addDate = addDate;
    }
    @Override
    public String toString() {
        return "Goods [id=" + id + ", name=" + name + ", img=" + img
                + ", count=" + count + ", addDate=" + addDate + ", i=" + i
                + "]";
    }
    public void study(String name){
        System.out.println("------study--------"+name);
    }
    private void getNum(Integer num){
        System.out.println("---------num-------"+num);
    }
}


资源下载链接为: https://pan.quark.cn/s/d3128e15f681 罗技MX Master 2S是一款高端无线鼠标,凭借其卓越的性能和舒适性,深受专业设计师、程序员以及需要长时间使用鼠标的人群的喜爱。它在macOS平台上表现出色,功能丰富。而“LogiMgr Installer 8.20.233.zip”是该鼠标在macOS系统上对应的软件安装程序,版本号为8.20.233,主要功能如下: 驱动安装:该安装包可确保MX Master 2S在macOS系统中被正确识别和配置,发挥出最佳硬件性能,同时保证良好的兼容性。它会安装必要的驱动程序,从而启用鼠标的高级功能。 自定义设置:借助此软件,用户能够根据自己的工作习惯,对MX Master 2S的各个按钮和滚轮功能进行自定义。比如设置特定快捷键、调整滚动速度和方向等,以满足个性化需求。 Flow功能:罗技Flow是一项创新技术,允许用户在多台设备间无缝切换。只需在软件中完成设备配置,鼠标就能在不同电脑之间进行复制、粘贴操作,从而大幅提升工作效率。 电池管理:软件具备电池状态监控功能,可帮助用户实时了解MX Master 2S的电量情况,并及时提醒用户充电,避免因电量不足而影响工作。 手势控制:MX Master 2S配备独特的侧边滚轮和拇指按钮,用户可通过软件定义这些手势,实现诸如浏览页面、切换应用等操作,进一步提升使用便捷性。 兼容性优化:罗技的软件会定期更新,以适应macOS系统的最新变化,确保软件与操作系统始终保持良好的兼容性,保障鼠标在不同系统版本下都能稳定运行。 设备配对:对于拥有多个罗技设备的用户,该软件能够方便地管理和配对这些设备,实现快速切换,满足多设备使用场景下的需求。 在安装“LogiMgr Installer 8.20.233.app”时,用户需确保macOS系统满足软件的最低要求,并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值