JSP与JavaBean

目录

一、JavaBean是什么

二、创建JavaBean

三、在JSP中使用JavaBean

1、按照Java语法直接使用

2、<jsp:useBean>动作

Bean的加载原理

scope属性的不同取值

3、<jsp:setProperty>动作

设置为一个表达式的值或字符序列

通过表单的参数的值来设置Bean的相应属性的值

4、<jsp:getProperty>动作

四、例子

 举例一​编辑

 登陆系统

求三角形的面积

注册系统


一、JavaBean是什么

JavaBean实质上是一个Java的类,但它又有自己独特的地方,通常一个标准的JavaBean应遵循如下规范:

  • 实现java.io.Serializable接口(JSP中使用可以不要)
  • 必须存在一个public、无参的构造方法
  • 成员变量private、成员方法public、类public
  • 获取属性值getXxx()、修改属性值setXxx、isXxx()

这个类的对象称为一个JavaBean,简称Bean

二、创建JavaBean

三、在JSP中使用JavaBean

1、按照Java语法直接使用

运行结果:

 

2、<jsp:useBean>动作

使用JSP动作标记useBean加载使用bean:(实例化一个JavaBean对象)

<jsp:useBean id="bean的名字" class="创建bean的类" scope="bean有效范围"/>
//或
<jsp:useBean id="bean的名字" class="创建bean的类" scope= "bean有效范围"></jsp:useBean>
//例如:
<jsp:useBean id="circle" class="tom.jiafei.Circle" scope="page" />
Bean的加载原理

        Tomcat服务器首先在Tomcat服务器管理的pageContent内置对象中查找是否含有这样的Bean。如果这样的Bean存在,Tomcat服务器就分配这样的Bean给用户;如果在pageContent中没有查找到JSP动作标记要求的Bean,就根据class指定的类创建一个Bean,并将所创建的Bean添加到pageContent中。

        通过Tomcat服务器创建Bean的过程可以看出,首次创建一个新的Bean需要用相应类的字节码文件创建对象,当某些JSP页面再需要同样的Bean时,Tomcat服务器直接将pageContent中已经有的Bean分配给JSP页面,提高了JSP使用Bean的效率。

        若修改了字节码文件,则需要重启Tomcat服务器才能使用新的字节码文件

scope属性的不同取值
作用范围含义
page

只能在用户访问的当前的页面使用(包括通过include指令静态包含的页面有效);

不同用户的page bean互不相同,互相独立

request

可以在处理同一个请求的任意一个页面中使用,直到该页面执行完毕向客户端发出响应或产生新的请求为止

不同用户的request bean互不相同,互相独立

session

可以在同一次会话的任意一个页面中使用,直到会话结束;

不同用户的session bean互不相同,互相独立;

如果用户访问Web服务目录多个页面,那么每个页面id相同的session bean是同一个bean

application

有效范围是当前Web服务目录下的各个页面,存活时间直到服务器重新启动;

Tomcat服务器为访问Web服务目录的所有用户分配一个共享的bean;

任何一个用户对自己application bean的属性的改变,都会影响到其他的用户(不同Web服务目录的application bean互不相同)

 举例:

 

3、<jsp:setProperty>动作

用于设置和访问Bean的属性

  • 设置为一个表达式的值或字符序列
<jsp:setProperty name="bean的id " property="bean的属性"value= "<%=expression%>"/>
//value给出的值的类型要和bean的属性的类型一致
<jsp:setProperty name="bean的id " property="bean的属性" value= "字符序列" />
  • 通过表单的参数的值来设置Bean的相应属性的值
//1、用表单的所有参数的值设置bean相对应的属性值
//要求Bean属性名必须在表单中有名称相同的参数名字相呼应
//Tomcat服务器会自动将参数的字符串值转换为Bean的相对应的属性的值
<jsp:setProperty  name= "bean的id的名字"  property="*" />
//2、用表单的某个参数的值设置bean的某个属性值
<jsp:setProperty  name= "bean的名字"  property="属性名"  param= "参数名" />
4、<jsp:getProperty>动作

获取Bean的属性值,并将这个值以串的形式发送给用户的浏览器

<jsp:getProperty  name="bean的id " property="bean的属性" />
<jsp:getProperty  name="bean的id "  property="bean的属性"></jsp:getProperty>

当JSP页面使用getProperty标记获取属性xxx的值时,必须保证bean有相应的getXxx方法,即对方法的名字的命名有特殊的要求

让request调用setCharacterEncoding方法设置编码为utf-8,以避免显示bean的属性值出现乱码现象  

四、例子

 举例一

 登陆系统

求三角形的面积
package javabean.data;public class Triangle {private double a,b,c,s;private boolean ok;public boolean isOk() {if(a+b>c && a+c>b && b+c>a){ok=true;}return ok;}public double getS() {if(ok){double p=(a+b+c)/2;s=Math.sqrt(p*(p-a)*(p-b)*(p-c));}return s;}public double getA() {return a;}public void setA(double a) {this.a = a;}public double getB() {return b;}public void setB(double b) {this.b = b;}public double getC() {return c;}public void setC(double c) {this.c = c;}}

注册系统

package javabean.data;public class UserRegisterBean {private String name,sex,adress;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAdress() {return adress;}public void setAdress(String adress) {this.adress = adress;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/6524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL — List的接口讲解 +详细模拟实现

前言&#xff1a; 本章我们将学习STL中另一个重要的类模板list… list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是带头双向循环链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xf…

论文笔记ColdDTA:利用数据增强和基于注意力的特征融合进行药物靶标结合亲和力预测

ColdDTA发表在Computers in Biology and Medicine 的一篇一区文章 突出 • 数据增强和基于注意力的特征融合用于药物靶点结合亲和力预测。 • 与其他方法相比&#xff0c;它在 Davis、KIBA 和 BindingDB 数据集上显示出竞争性能。 • 可视化模型权重可以获得可解释的见解。 …

三种滤波(EKF、UKF、CKF)的对比,含MATLAB源代码

使用MATLAB模拟三维的滤波,包含扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF、容积卡尔曼滤波CKF。 状态更新和观测更新均为非线性的,模拟一定强度的机动性,可用于卡尔曼滤波方法的对比学习,自己修改成需要的运动模型后,可以用于组合导航(GPS+DVL形式)。 运行结果 真值的三轴…

Unity UGUI Image 点击事件忽略空白像素区域

我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击&#xff0c;点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域&#xff0c;这样不能满足于我们的使用需求了。 首先我们需要把图片本身的Read/Write 选项打开 然后…

Meta Llama 3 使用 Hugging Face 和 PyTorch 优化 CPU 推理

原文地址&#xff1a;meta-llama-3-optimized-cpu-inference-with-hugging-face-and-pytorch 了解在 CPU 上部署 Meta* Llama 3 时如何减少模型延迟 2024 年 4 月 19 日 万众期待的 Meta 第三代 Llama 发布了&#xff0c;我想确保你知道如何以最佳方式部署这个最先进的&…

时间日志格式的统一和定制

返回当前格式的时间没有错误&#xff0c;但是不符合中国人的阅读习惯 解决&#xff1a; 方案一&#xff1a;JsonFormat 解决后端 传到 前端格式问题 依赖&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jack…

STM32:GPIO输出

文章目录 1、GPIO介绍1.1 GPIO的基本结构1.1 GPIO的位结构 2、 GPIO工作模式3、GPIO标准外设库接口函数3.1 RCC接口函数3.2 GPIO接口函数3.2.1 GPIO的读取函数3.2.1 GPIO的写入函数 4、GPIO的初始化 1、GPIO介绍 GPIO&#xff08;General Purpose Input Output&#xff09;通用…

Python设计模式 - 单例模式

定义 单例模式是一种创建型设计模式&#xff0c; 其主要目的是确保一个类只有一个实例&#xff0c; 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理&#xff1a;当需要共享某个资源时&#xff0c;例如数据库连接、线程池、日志对象等&#xff0c;可以使用单例模…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

【算法与数据结构】哈希表

文章目录 引入哈希函数介绍便利店的例子Python3 中的哈希表C 中的哈希表 应用将散列表用于查找防止重复将散列表用作缓存 哈希冲突与解决链地址法开放寻址 总结参考资料写在最后 引入 假设你在一家便利店上班&#xff0c;你不熟悉每种商品的价格&#xff0c;在顾客需要买单是时…

详述DM9161芯片的特性和用法

目录 概述 1. 认识DM9161 2 DM9161的特性 2.1 特性总结 2.2 结构框图 3 功能描述 4 RMII接口 4.1 100Base-TX Operation 4.2 10Base-T Operation 4.3 Auto-Negotiation 4.4 HP Auto-MDIX功能描述 6 DM9161的寄存器 6.1 寄存器列表 6.2 寄存器功能介绍 6.2.1 基本…

ubuntu20中ros与anaconda的python版本冲突问题

系统环境 原本系统是ubuntu20 noetic&#xff0c;python都在/usr/bin中&#xff0c;一共是两个版本的python&#xff0c;一个是python3.8&#xff0c;另一个是python2.7。 问题发现 当安装anaconda后&#xff0c;并且将anaconda的bin目录加入到系统环境中时候&#xff0c;…

Stable Diffusion webUI 配置指南

Stable Diffusion webUI 配置指南 本博客主要介绍部署Stable Diffusion到本地&#xff0c;生成想要的风格图片。 文章目录 Stable Diffusion webUI 配置指南1、配置环境&#xff08;1&#xff09;pip环境[可选]&#xff08;2&#xff09;conda环境[可选] 2、配置Stable Diffu…

Monorepo(单体仓库)与MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

&#x1f31f; 引言 在软件开发的浩瀚宇宙里&#xff0c;选择合适的代码管理方式是构建高效开发环境的关键一步。今天&#xff0c;我们将深入探讨两大策略——Monorepo&#xff08;单体仓库&#xff09;与MultiRepo&#xff08;多仓库&#xff09;&#xff0c;并通过使用现代化…

CMakeLists.txt语法规则:部分常用命令说明一

一. 简介 前一篇文章简单介绍了CMakeLists.txt 简单的语法。文章如下&#xff1a; CMakeLists.txt 简单的语法介绍-CSDN博客 接下来对 CMakeLists.txt语法规则进行具体的学习。本文具体学习 CMakeLists.txt语法规则中常用的命令。 二. CMakeLists.txt语法规则&#xff1a;…

【Qt问题】VS2019 Qt win32项目如何添加x64编译方式

解决办法&#xff1a; 注意改为x64版本以后&#xff0c;要记得在项目属性里&#xff0c;修改Qt Settings、对应的链接include、lib等 参考文章 VS2019 Qt win32项目如何添加x64编译方式_vs2019没有x64-CSDN博客 有用的知识又增加了~

Spring事件

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Spring⛺️稳中求进&#xff0c;晒太阳 Spring事件 简洁 Spring Event&#xff08;Application Event&#xff09;就是一个观察者模式&#xff0c;一个bean处理完任务后希望通知其他Bean的…

OpenCV人脸识别C++代码实现Demo

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了很多函数&#xff0c;这些函数非常高效地实现了计算机视觉算法。 官网&#xff1a;https://opencv.org/ Github: https://github.com/opencv/opencv Gitcode…

查找算法与排序算法

查找算法 二分查找 (要求熟练) // C// 二分查找法&#xff08;递归实现&#xff09; int binarySearch(int *nums, int target, int left, int right) // left代表左边界&#xff0c;right代表右边界 {if (left > right) return -1; // 如果左边大于右边&#xff0c;那么…

初始化Linux或者Mac下Docker运行环境

文章目录 1 Mac下安装Docker2 Linux下安装Docker2.1 确定Linux版本2.2 安装Docker2.3 配置加速镜像 3 Docker安装校验4 安装docker-compose4.1 直接下载二进制文件4.2 移动二进制文件到系统路径4.3 设置可执行权限4.4 验证安装 1 Mac下安装Docker mac 安装 docker 还是比较方便…