目录


JavaBean

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

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

JavaBeanJ2EE开发中,通常用于封装数据 ;

对于遵循以上写法的JavaBean组件,其他程序可以通过反射技术实例化JavaBean对象,并且通过 反射 那些遵守命名规范的方法,从而获得JavaBean的属性,进而调用其属性对应的方法保存数据;


在JSP中使用JavaBean

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

  1. <jsp:useBean id=””> 标签:

    用于在JSP页面查找或实例化一个JavaBean组件;

  2. <jsp:setProperty name="" property="" >标签:

    用于在jsp页面中设置一个Javabean组件的属性;

  3. <jsp:getProperty name="" property=""> 标签:

    用于在jsp页面中获取一个Javabean组件的属性;

下面会详细讲解三个标签的用法;


<jsp:useBean id=""> 标签用法

用于在 指定的域范围内 查找 指定名称javaBean对象:

  • 如果存在,则直接返回该JavaBean对象的引用;
  • 如果不存在,则实例化一个新的JavaBean对象并将它以指定的名字存储到指定的域范围中;

常用语法:

<jsp:useBean id="Javabean实例名" class="实例完整类名" scope="域" ></jsp:useBean>

id 属性用于指定JavaBean实例化对象的引用名称,该名称也是 Javabean 保存在域中的名称;

class 属性用于指定JavaBean的完整类名(即必须带完整的包名

scope 属性用于指定 JavaBean 实例化对象所存储的域范围,默认是page,取值只能是四个域中的一个;

原理:这个jsp标签 的底层原理是怎么执行的呢?

首先这是一个jsp页面中的标签,所以它也会被翻译为servlet在写上这个标签以后,翻译过去的servlet中,就会多一个对象这个对象是以完整包名定义的,名字就是id的值;

然后pageContext对象,就会在在scope指定的域中寻找这个对象,赋值给id的值,如果没找到这个对象,就会创建一个对象,存进域中,再返回这个值;


带标签体的 JavaBean 标签

标签体只在创建JavaBean实例的时候,得到执行;也就是说,如果,JavaBean的实体,之前已经存在了,则不会执行这个标签体了;


setProperty 标签

其中name的值是 Javabean实例的名字property 的值是 Javabean实例的属性名字

有3种赋值方法:

  1. 直接赋值 使用 value

    <jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" value = "要赋值的值"/>
  2. 获取 request 请求参数赋值,使用param,这里支持8中 基本数据类型 的转换;

    如果是8种数据类型之外的数据,则需要使用脚本表达式来赋值,比如 <%= new Date()%>

    <jsp:setProperty name = "JavaBean实例名"  property = "Javabean实例的属性名" param = "request对象中的参数名"
  3. 使用 *

    <jsp:setProperty name="Javabean实例的名字" property="*" />

    会将request请求中的参数,按照Javabean属性名字对应的自动的赋值给JavaBean

    其中原理是,利用反射技术,得到JavaBean的字段,进而得到get、set方法,进行赋值;

    request 请求参数中的属性名字不能写错,写错了,就跟Javabean属性对不上了;

备注(很重要)其中在赋值的时候,使用 request 请求参数赋值的时候(也就是上述的2、3方法),如果 request 并没有参数,则不会产生赋值行为 ;


getProperty 标签

语法:

<jsp:getProperty name="Javabean实例名" property="Javabean实例属性名字">

会将取出的值,转换为字符串类型如果属性被置为null,则取出的是''null''这个字符串;这里需要注意;一般我们不返回null;


JSP开发模式

分两种;

其一:

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+javaBean模式。


其二:

JSP+Javabean模式适合开发业务逻辑不太复杂的微博应用程序,这种模式下,Javabean用于封装业务数据,JSP即负责处理用户请求,又显示数据;

Servlet+JSP+JavaBean (MVC)模式适合开发复杂的web应用,在这种模式下servlet负责处理用户请求,JSP负责数据显示,JavaBean负责封装数据。Web开发推荐这种模式,层次分明。(MVC模式)


案列:使用 模式一 编写一个在线计算器;

案例代码(点击下载)

主要是3个标签的用法;

(九)Javabean与Jsp(来自那些年的笔记)的更多相关文章

  1. javaBean和jsp应用

    原网页:http://www.douban.com/note/102320977/ JavaBean是一种可复用,跨平台的组件.共有两种JavaBean:一种无用户界面,这种一般用于处理数据运算,操作 ...

  2. Javabean+servlet+JSP(html)实例应用

    大家都知道Javabean+servlet+JSP是最简单的MVC模式.的确,在一个小型的项目中,这个模式完全够用. 它优雅并且简洁.加上jQueryui的完美展示效果,让这个模式看起来非常合适.当然 ...

  3. JavaBean与Jsp

    这一节我们总结一下JavaBean和Jsp的关系. 1. JavaBean javaBean是一个遵循特定写法的Java类,它通常具有如下特点:        1)这个java类必须具有一个无参构造函 ...

  4. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  5. JavaBean在jsp中的使用

    JavaBean在Jsp中的引用: 1.用<jsp:useBean>标记: <jsp:useBean id="name" class="classnam ...

  6. 处理javabean的JSP标签

    (1) 关于javabean要求: 1,具有无参的构造函数. 2,针对每一个成员变量,因改提供相应get/set. 3,implments Serializable(实现才能对象序列化). (2) 使 ...

  7. java web学习总结(二十九) -------------------JavaBean的两种开发模式

    SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...

  8. javabean和jsp动作元素

    model1就是利用了jsp和javabean 的组合来处理问题.jsp页面如果有太多的逻辑代码的话,维护起来和扩展起来是相当的麻烦的.所以jsp的逻辑代码部分都打包到一种java类当中进行编写.这种 ...

  9. JavaBean用JSP调用和使用JSP动作标签的区别

    javabean的类可以用jsp动作标签实例化并使用. <!-- 下面这句是对Javabean类person的引用,引用的实例是p2 --> <jsp:useBean id=&quo ...

随机推荐

  1. luogu_P3345[zjoi2015]幻想乡战略游戏

    传送门 Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看 ...

  2. win10下交换CapLock和Esc按键

    win10下使用vim编辑时,需频繁用Esc键,可是Esc键在键盘左上角,位置遥远,操作不便.可以CapsLock键处在黄金位置,但是几乎无用,看过键盘发展历史,其实是是在发展过程中的意外而已,将两键 ...

  3. 【2018.07.28】(字符串/回文串)学习Manacher算法小记

    主要是应用在回文串啦,原理也理解了老半天,如果没有图片的话,我也看不太懂它的原理 学习的灵感来源来自于:https://segmentfault.com/a/1190000008484167 /* 最 ...

  4. webapi接口上传大文件

    通过WebApi或者MVC模式的接口上传文件时,总数报错 413 Request Entity Too Large IIS 404 服务未找到 解决方法: 1. 在web.config文件下找到sys ...

  5. spring boot 之登录笔记

    在测试平台的开发中,会牵涉到登录内容,页面需要登录后才能访问,所以,对于登录的开发是很有必要的.本文记录我在系统登录的一些自己的做法. 首先对登录进行设计. 如下: 1.登录密码输入错误超过次数限制 ...

  6. 研途APP——项目需求分析

    研途APP--项目需求分析 1.作业描述 项目 内容 课程 软件工程实践 作业链接 团队作业第二次-需求规格说明书 团队名称 8rookies 作业目标 作业正文 研途APP--项目需求分析 其他参考 ...

  7. Django 测试开发3 数据模型models和admin管理工具

    参考:https://blog.csdn.net/weixin_44510615/article/details/89425412 1.Django模型字段常用类型: IntegerField : 整 ...

  8. [Java]在JAVA中使用Oracle的INSERT ALL语法进行批量插入

    Oracle也提供了类似MySQL的批量插入语法,只是稍微别扭些,具体代码如下: package com.hy; import java.sql.Connection; import java.sql ...

  9. 微信小程序之分享功能

    说到分享 大家都会想到手机右上角点击不就分享了么?对的没错,那样是分享转发的是小程序  而不是指定的某个页面,所以自己动手丰衣足食,自己写一个转发功能被, 其实也没那么可怕,主要参考的是微信小程序AP ...

  10. uboot自定义添加命令

    1.添加命令 1.u-boot的命令格式: U_BOOT_CMD(name,maxargs,repeatable,command,”usage”,"help") name:命令的名 ...