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.rhkb.cn/news/319314.html

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

相关文章

Find My无人机|苹果Find My技术与无人机结合,智能防丢,全球定位

无人机是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机&#xff0c;或者由车载计算机完全地或间歇地自主地操作。无人机按应用领域&#xff0c;可分为军用与民用。军用方面&#xff0c;无人机分为侦察机和靶机。民用方面&#xff0c;无人机行业应用&#xff0c;是无…

43 单例模式

目录 1.什么是单例模式 2.什么是设计模式 3.特点 4.饿汉和懒汉 5.峨汉实现单例 6.懒汉实现单例 7.懒汉实现单例&#xff08;线程安全&#xff09; 8.STL容器是否线程安全 9.智能指针是否线程安全 10.其他常见的锁 11.读者写者问题 1. 什么是单例模式 单例模式是一种经典的&a…

多多搜索推广计划怎么设置

拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商家破零、积累基础销量的重要…

自动化机器学习——网格搜索法:寻找最佳超参数组合

自动化机器学习——网格搜索法&#xff1a;寻找最佳超参数组合 在机器学习中&#xff0c;选择合适的超参数是模型调优的关键步骤之一。然而&#xff0c;由于超参数的组合空间通常非常庞大&#xff0c;手动调整超参数往往是一项耗时且困难的任务。为了解决这个问题&#xff0c;…

连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox 使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ 打开MQTTX&#xff0c;创建连接&#xff0c;点击NEW SUBSCRIPTION,创建一个主题&#xff0c;这里使用test/topic,在下面Json中填写…

使用 ORPO 微调 Llama 3

原文地址&#xff1a;https://towardsdatascience.com/fine-tune-llama-3-with-orpo-56cfab2f9ada 更便宜、更快的统一微调技术 2024 年 4 月 19 日 ORPO 是一种新的令人兴奋的微调技术&#xff0c;它将传统的监督微调和偏好校准阶段合并为一个过程。这减少了训练所需的计算…

Java零基础入门到精通_Day 8

1.API 应用程序接口 Java API:指的就是JDK 中提供的各种功能的Java类这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要学习这些类如何使用即可&#xff0c;我们可以通过帮助文档来学习这些API如何使用。 2. String String 类…

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…

循环神经网络完整实现(Pytorch 13)

一 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 %matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab …

分布式websocket IM即时通讯聊天开源项目如何启动

前言 自己之前分享了分布式websocket的视频有同学去fork项目了&#xff0c;自己启动一下更方便理解项目嘛。然后把项目启动需要的东西全部梳理出来。支持群聊单聊,表情包以及发送图片。 支持消息可靠&#xff0c;消息防重&#xff0c;消息有序。同时基础架构有分布式权限&…

OneFlow深度学习框原理、用法、案例和注意事项

本文将基于OneFlow深度学习框架&#xff0c;详细介绍其原理、用法、案例和注意事项。OneFlow是由中科院计算所自动化研究所推出的深度学习框架&#xff0c;专注于高效、易用和扩展性强。它提供了一种类似于深度学习库的接口&#xff0c;可以用于构建神经网络模型&#xff0c;并…

Android4.4真机移植过程笔记(三)

如果文章字体看得不是很清楚&#xff0c;大家可以下载pdf文档查看&#xff0c;文档已上传&#xff5e;oo&#xff5e; 7、安装加密APK 需要修改文件如下&#xff1a; 相对Android4.2改动还是蛮大的&#xff0c;有些文件连路径都变了: //Android4.2 1、frameworks/native/libs…

STL速查

容器 (Containers) 图解容器 支持随机访问 stringarrayvectordeque支持支持支持支持 string 类 构造函数 string(); ------创建一个空的字符串 例如: string str;string(const char* s); ------使用字符串s初始化string(const string& str); ------拷贝构造 赋值操作…

C++学习--点滴记录011

11函数提高 11.1 函数默认参数 在C中&#xff0c;函数的形参列表中的形参可以有默认值 语法&#xff1a; 返回值类型 函数名 &#xff08;参数 默认值&#xff09;{} 示例&#xff1a; #include <iostream> using namespace std;int func(int a, int b 10, int c …

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

wpf线程中更新UI的4种方式

在wpf中&#xff0c;更新UI上面的数据&#xff0c;那是必经之路&#xff0c;搞不好&#xff0c;就是死锁&#xff0c;或者没反应&#xff0c;很多时候&#xff0c;都是嵌套的非常深导致的。但是更新UI的方式&#xff0c;有很多的种&#xff0c;不同的方式&#xff0c;表示的意思…

国内各种免费AI聊天机器人(ChatGPT)推荐(中)

作者主页&#xff1a;点击&#xff01; 国内免费AI推荐(ChatGPT)专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月29日15点20分 随着人工智能技术的不断发展&#xff0c;AI聊天机器人已经逐渐融入我们的日常生活。它们可以提供各种服务&#xff0c;例如聊天、…

Golang | Leetcode Golang题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; // blank 返回长度为 n 的由空格组成的字符串 func blank(n int) string {return strings.Repeat(" ", n) }func fullJustify(words []string, maxWidth int) (ans []string) {right, n : 0, len(words)for {left : right // 当前…

leetCode72. 编辑距离

leetCode72. 编辑距离 基本思路&#xff1a; 代码 class Solution { public:int minDistance(string a, string b) {// a,b的0不做表示&#xff0c;所以从1开始&#xff0c;dp状态表示&#xff0c;这种办法会很方便a a, b b;int n a.size();int m b.size(); // 定…

Elasticsearch 数据聚合

Bucket聚合&#xff08;桶聚合&#xff09; 对文档做分组&#xff0c;aggs 按照文档字段值或日期进行分组&#xff0c;能参与分词的字段不能做聚合&#xff0c;如text类型的字段 例如&#xff1a;根据城市名称做聚合&#xff0c;也就是城市名称对数据进行分组统计。可以加qu…