zoukankan      html  css  js  c++  java
  • JavaBean技术

    JSP设计模式

    关于JavaBean的产生原因和JSP开发模式的一个演变可以参照如下示例图

    两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式。
    JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序(因为业务逻辑复杂,控制代码多,而在JSP中编写控制代码,十分不便),这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。(JSP中编写业务控制逻辑代码)
    Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求(控制器,连接模型和视图,对整个业务流程进行控制,调用JavaBean封装处理数据,调用JSP显示页面),jsp负责数据显示,javabean负责封装数据(Model 模型功能)。 Servlet+JSP、JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。

    这里写图片描述
    关于JavaWeb_MVC模式可以参见之前的博客http://blog.csdn.net/megustas_jjc/article/details/52922859,在此不再细说。(其中JavaBean符合Model,JSP符合View,Servlet符合Controller)

    JavaBean

    (1)什么是JavaBean

    1、是一个Java 类
    2、必须存在无参数构造方法
    3、所有成员变量都是private
    4、私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。即如果想private成员变量被外界访问,提供public的get和set方法。

    编写好JavaBean组件,其他程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。 关于反射技术,参考http://blog.csdn.net/megustas_jjc/article/details/52769688,这里需要注意不要将JavaBean与单例模式混淆(通过内省Introspection,也可以对JavaBean进行操作,Introspection对JavaBean通过反射技术操作,出国留学内省是一套基于反射技术,更易于操作JavaBean的API)

    单例模式

    1、private 构造方法
    2、private static 实例对象
    3、public static 对象访问方法

    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。如下是一个Java代码实例:

    一些资源管理器常常设计成单例模式。在计算机系统中,需要管理的资源包括软件外部资源,譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。

    (2)使用JavaBean的原因

    程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。

    JavaBean传统应用于可视化领域,如AWT(窗口工具集)下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、雅思基础控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet成为当前开发Web应用的主流模式。

    (3)JavaBean的属性

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

    (4)在JSP中使用JavaBean

    1. 标签:用于在指定的域范围内查找指定名称的JavaBean对象:
      如果存在则直接返回该JavaBean对象的引用。
      如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。
      常用语法

      id属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。
      class属性用于指定JavaBean的完整类名(即必须带有包名)。
      scope属性用于指定JavaBean实例对象所存储的域范围,英语培训费用其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

    例如:

    翻译为(即会生成一个.java文件):

    代码效果:从page返回获得person对象,如果不为null 直接使用,如果为null 创建新的Person对象

    标签:用于在JSP页面中设置一个JavaBean组件的属性。
    标签:用于在JSP页面中获取一个JavaBean组件的属性。

    (5)实例
    首先,我们写一个JavaBean:

    JSP页面:

    因为实际开发中,主要应用model2模式,所有javabean相关标签已经很少使用。

    setProperty特殊用法
    —- 根据请求数据自动封装 Person属性

    这里写图片描述

    利用最简单的Model 1 JSP+JavaBean模式,我们可以简单的实现一个计算器的功能:

    这里写图片描述

    代码很简单,在此就不再附上实际代码。

  • 相关阅读:
    ThinkPHP中PHPExcel的使用(包含日期格式)
    python学习一
    autocomplete 在火狐中文输入的问题
    NPM WARN 错误分析汇总
    react+reatrouter+redux学习笔记
    a++与++a的区别
    ES6箭头函数(Arrow Functions)
    document.referrer
    modem无法编译
    linux时钟浅析 转载
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10037430.html
Copyright © 2011-2022 走看看