在JSP中可以像使用普通类一样访问JavaBean,在脚本元素中实例化类的对象,调用对象的方法。JSP提供了3个动作元素,和来访问JavaBean。
1.1
动作用于初始化JavaBean,或者定位一个已经存在的JavaBean实例,并把实例的引用赋给一个变量。
元素各属性的含义:
▶id
用于标识JavaBean实例的名字,同时,该名字也是声明的脚本变量的名字,并被初始化为JavaBean实例的引用。要注意指定的名字是区分大小写的,并遵照Java语言变量命名的约定。
▶scope
指定一个范围,在这个范围内,JavaBean实例的引用是可用的,实际上也是指定JavaBean实例的生命周期。可能的取值有:page、request、session和application,默认值是page。
▶class
指定JavaBean对象的完整的限定类名。
▶beanName
指定Bean的名字。该名字被提供给java.beans.Beans类的instantiate()方法,来实例化一个JavaBean。
▶type
指定定义的脚本变量的类型。这个类型可以是Bean类本身,它的父类,或者由Bean类实现的接口。该属性默认的值和class属性的值一样。
动作的行为如下:
(1)JSP容器在元素指定的范围中查找指定id的JavaBean对象。
(2)如果找到相应的对象,并且在元素中指定了type属性,那么JSP容器会试图把找到的对象转换为指定的type。如果类型转换失败,则抛出java.lang.ClassCastException异常。
(3)如果没有在指定的范围内找到对象,并且在元素中没有指定class或beanName属性,则会抛出java.lang.InstantiationException异常
(4)如果没有在指定的范围内找到对象,并且在元素中指定了class属性,则利用这个类创建一个新的对象,将这个对象的引用赋值给由属性id所指定的名字的变量,并将这个对象保存到属性scope指定的范围中(在调用setAttribute()方法时,以属性id指定的名字作为属性名)。
(5)如果没有在指定的范围中找到对象,并且在元素中指定了beanName属性,则用beanName作为参数调用java.beans.Beans类中的instantiate()方法。如果这个方法执行成功,则把新创建的对象的引用赋值给由属性id所指定的名字的变量,并将这个对象保存到属性scope指定的范围中(在调用setAttribute()方法时,以属性id指定的名字作为属性名)。
2.2
动作和一起使用,用来设置JavaBean的简单属性和索引属性。动作使用Bean中的setXXX()方法,在Bean中设置一个或多个属性值。在JSP中,经常使用动作元素将客户端提交的数据保存到JavaBean的属性中。
▶name
Bean实例的名字,它必须是已经在元素中通过id属性定义的名字。Bean的实例必须包含可写(具有setXXX()方法)的属性。
▶property
被设置的属性的名字。如果property属性的值是“*”,标签就会在请求对象中查找所有的请求参数,看是否有参数的名字和Bean属性的名字相同,如果找到匹配的参数和属性,就会按照正确的类型(自动进行类型转换)将参数的值设置为属性的值。如果一个参数的值为空(""),对应的属性的值不会被修改。
▶param
指定请求对象中参数的名字。在设置Bean的属性时,如果请求参数的名字和Bean属性的名字不同,可以用param来指定参数的名字。如果没有使用param,那么就认为请求参数的名字和Bean属性的名字相同。在元素中,不能同时出现param和value属性。
▶value
指定要赋给Bean属性的值。可以用一个请求时属性表达式(a request-time attribute exception)作为value属性的值。在元素中,不能同时出现param和value属性。
3.3
动作用来访问一个Bean的属性,并把属性的值转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用该对象的toString()方法。
语法:

属性含义:
▶name Bean实例的名字,从这个实例中可以得到属性。
▶property 要得到的属性的名字。Bean的实例必须包含可读(具有getXXX()方法)的属性。
在编写JavaBean的时候,有两个地方需要注意:一、必须为JavaBean指定一个包名,否则JSP将无法调用JavaBean;二、让UserBean实现了java.io.Serializable接口,也就是让UserBean对象支持序列化。在JSP中,JavaBean对象常常作为数据的持有者,如果在你的应用开发中,JavaBean对象需要在不同的运行环境中传递,或者需要保存到持久存储设备中,那么应该让JavaBean类实现Serializable接口。如果JavaBean只是在单一的环境中使用,而且也不需要被保存到持久存储设备中,那么JavaBean类就不需要实现Serializable接口。
JavaBean的类和Servlet类放置的位置是一样的,都是放在WEB-INF\classes目录下。

解决在没有关闭浏览器的情况下,重新输入信息,现实的信息是先前提交的信息的两种方式:
1.改变useBean对象的范围,设为page或request,但是这样就会在重新打开页面时无法获取到信息;
2.将动作移到元素的外面调用。

转载于:https://www.cnblogs.com/KindGod/p/5730111.html

东软实训2-在jsp中使用javaBean相关推荐

  1. 东软实训心得:做事务的主宰者

    转眼间,来到东软实训已经一个礼拜了.从陌生的城市,陌生的人群,陌生的气候带来的茫然与不安的情绪,被和蔼可亲的班主任老师独有的东北人热情友善感染,使我渐渐适应,转为现在的放心与安定.我的父辈本也就是沈阳 ...

  2. [记录]明天开始东软实训

    这个假期对于我来说没有假可放,因为我要参加 东软实训,方向肯定是.NET方向. 我们这次最终的项目是实训OA系统(自动办公系统).OA上比较常见的案例.希望能在这次实训中,学习更好的知识.特别是Ent ...

  3. 东软实训心得:万事开头难

    在东软实训三个多月的JavaEE,有了许多心得体会,在这里小小的发些感慨,希望对刚刚来东软实训的同学有些帮助.毕竟我现在也算是一个过来人了. 起初我在大学的时候只是学过一些基本的JavaSE,记得那时 ...

  4. 东软实训心得:用正能量去学习和交流

    用正能量去学习和交流--李同学    时间飞逝,当我还在感受每一天新鲜的事物时,就在今天,张老师给我们留了一个表达实训心得体会的机会,突然意识到我已经来东软2个多月了!!! 从9月份走来,在东软实训的 ...

  5. 东软实训推荐面试问题12:三分钟表现自己使我感兴趣就留下来?

    东软实训推荐面试问题:三分钟表现自己使我感兴趣就留下来? 问题:你可以有三分钟的表现自己的机会,若表现得使我感兴趣,就留下来,否则另请高就. 回答:这三分钟的表现,可以成为你去留的依据,有的学生充分显 ...

  6. java bean id_在 JSP中使用JavaBean的标签是 ,其中 id的用途是 __________________学小易找答案...

    [多选题]Flash渐变动画分为().P22 [单选题]关于 JavaBean,下列的叙述哪一项是不正确的?( ) [填空题]用户在实际 Web应用开发中,编写Bean除了要使用 __________ ...

  7. 在JSP中使用JavaBean

    JavaBean与Jsp.在JSP中使用JavaBean(<jsp:useBean>标签.<jsp:setProperty>标签.<jsp:getProperty> ...

  8. Python实训day10am【Python中的地址引用、os模块】

    Python实训-15天-博客汇总表 目录 1.Python中的地址引用 2.os模块(操作系统模块) 2.1.os案例1 2.2.os案例2 2.3.os案例3 2.4.os案例4 2.5.os案例 ...

  9. 中职计算机实训室管理规定,中高职智慧实训室管理系统

    中高职智慧实训室管理系统 利用物联网.互联网技术,通过智能数据控制终端设备获取前端数据资源,结合实训室管控软件平台的支撑,将实训室智能门禁.实训室视频监控.实训室远程电控.实训室温湿度检测.智慧电子门 ...

最新文章

  1. 一种将快捷方式从开始菜单“常用应用”的中去除的方法
  2. python编程自学能学会吗-小白看看!本人自学Python编程经验分享。
  3. SharePoint 2010 各个常用级别对象的获取
  4. Linux中apt install的lock问题
  5. 阿里云新征程:通往智能之路
  6. FwmarkServer 实现以及功能分析
  7. 张宇基础30讲 第17讲-元函数积分学基础知识
  8. 苹果a7处理器_苹果历代cpu性能对比
  9. 201671010415+词频统计软件项目报告
  10. java中的String和ArrayList类
  11. 计算机配置35%卡住不动了,win7配置更新35%不动怎么办
  12. 三维地质建模数据处理
  13. Docker容器学习笔记(看了狂神视频)
  14. hihocoder01串
  15. Apple Watch 的传感器
  16. C语言唐僧孙悟空白骨精游戏,Python--循环练习--唐僧大战白骨精小游戏
  17. pycharm使用eval reset不能重置
  18. 一张图分出你是左脑发达还是右脑发达(转)
  19. 数据库系统基础教程第三版 部分实验命令
  20. 2023年疫情开放,国内程序员薪资涨了还是跌了?大数据告诉你答案

热门文章

  1. Flex DataGrid的labelFunction用法例子
  2. 启用OWA提示用户密码过期工具
  3. LeetCode 1071. 字符串的最大公因子
  4. 七重定位是什么意思_手机后缀名Note、Mix、Mate代表什么意思?现在终于明白了...
  5. java方法语法_Java基础语法----方法
  6. Keras中的两种模型:Sequential和Model
  7. Ethernity Chain将发布棒球球星Fernando Tatis Jr.系列NFT
  8. 灰度资产管理总规模升至429亿美元
  9. Hxro将采用Solana作为第一层区块链,并过渡为完全去中心化的链上衍生品网络
  10. SAP License:SAP软件实施要点