2017.10.26 JavaWeb----第五章 JavaBean技术
JavaWeb----第五章 JavaBean技术
(1)JavaBean技术
JavaBean技术是javaweb程序的重要组成部分,是一个可重复使用的软件组件,是用Java语言编写的、遵循一定的标准类,,他封装了数据和业务逻辑,供JSP(或servlet,下一章介绍)调用,完成数据封装和数据处理功能。
(2)JavaBean 的设计
设计JavaBean就是编写java类,但与普通类不同,有其特殊的设计规则和要求。
(3)javabean的设计原则
【1】javabean是一个公共类;
【2】javabean类具有一个公共的无参的构造方法;
【3】javabean所有的属性定义为私有的;
【4】在javabean中,需要对每个属性提供两个公共方法,假设属性名是XXX,要提供的两个方法是:
setXXX():用来设置属性XXX的值
getXXX()用来获取属性XXX的值(若包括类型是boolean,则方法名为isXXX());
【5】定义javabean时,通常放在一个命名的包下。
(4).javabean设计案例
例题:设计一个表示圆的JavaBean类Circle.java,并且该JavaBean中具有计算圆的周长和面积的方法
package beans;
public class Circle {
private int number;//圆的编号
private double x;//圆心X的值
private double y;//圆心Y的值
private double radius;//半径
private String color;//绘制颜色
private boolean fill;//是否填充
public int getNumber() //成员number的get方法
{
return number;
}
public void setNumber(int number) //成员number的set方法
{
this.number=number;
}
public double getX()
{
return x;
}
public void setX(double x)
{
this.x=x;
}
public double getY()
{
return y;
}
public void setY(double y)
{
this.y=y;
}
public double getRadius()
{
return radius;
}
public void setRadius(double radius)
{
this.radius=radius;
}
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color=color;
}
public boolean isFill() //注意boolean类型属性的get/set方法以及该属性的声明
{
return fill;
}
public void setFill(boolean fill)
{
this.fill=fill;
}
public Circle(){}
//公共无参构造方法,这里使用的是默认构造方法
public double circleArea()
{
return Math.PI*radius*radius;
}
public double circleLength()
{
return 2*Math.PI*radius;
}
}
(5)在JSP中使用JavaBean
用JSP标签来访问JavaBean包括以下几种
<jsp:useBean>:声明并创建JavaBean对象实例;
<jsp:serProperty>:对JavaBean对象的指定属性设置值;
<jsp:getProperty>:获取JavaBean对象指定属性设置值,并显示自网页上。
例题:设计Web程序,计算任意两个整数的和,并在网页上显示结果
1.首先设计实现数据求和的JavaBean类Add.java
package beans;
public class Add {
private int shuju1;
private int shuju2;
public int getshuju1(){return shuju1;}
public int getShuju1() {
return shuju1;
}
public void setShuju1(int shuju1) {
this.shuju1 = shuju1;
}
public int getShuju2() {
return shuju2;
}
public void setShuju2(int shuju2) {
this.shuju2 = shuju2;
}
public Add(){}
public int sum(){return shuju1+shuju2;}
}
2.设计提交任意两个整数的JSP页面(input.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>提交任意两个整数的页面</title>
</head>
<body>
<h3>按下列格式要求,输入两个整数:</h3><br>
<form action="show.jsp" method="post"></form>
加数:<input name="shuju1"><br><br>
被加数:<input name="shuju2"><br><br>
<input type="submit" value="提交">
</body>
</html>
3.设计显示结果的页面(show.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>利用JavaBean+JSP求两数和</title>
<body>
<jsp:useBean id="c" class="beans.Add" scope="request"/>
<jsp:setProperty name="c" property="*"/> /为c对象的属性赋值
<p>调用jsp:property 做标签以及求和方法获取数据并显示:<br/>
<jsp:getProperty name="c" property="shuju1"/>+ <jsp:getProperty name="c" property="shuju2"/>
=<%=c.sum() %><br>
</p>
<p>调用使用类的方法获取数据并显示:<br>
<%=c.getShuju1() %>+<%=c.getShuju2() %>=<%=c.sum()%><br> //显示属性值
</p>
</body>
</html>
(6)声明JavaBean对象
1.声明JavaBean对象,需要用<jsp:useBean)的动作标签
2.声明格式:
<jsp:useBean id="对象名" class="类名" scope="有效范围"/>
使用说明:
···class属性:用来指定JavaBean的类名决定路径,例如:class=beans.Add
···id属性:指定所要创建的对象名称
···scope属性:指定所创建对象的作用范围,其取值有四个:页面page【默认值】、请求request、会话session、应用application,
3.要在show.jsp页面中,创建一个Add类对象c且其范围是session,则需要语句:
<jsp:useBean id="c" class="beans.Add" scope="session"/>
<jsp:useBean id="c" class="beans.Add"/>
(7)访问JavaBean属性------设置JavaBean属性值
设置JavaBean属性值需要<·jsp:setProperty>动作标签。而<·jsp:setProperty>动作标签是通过JavaBean中的set方法给相应的属性设置的值。它有四种设置方式:
<·jsp:setProperty>有四种设置方式
1.简单JavaBean的属性设置
····设置属性值格式:<jsp:setProperty name="beanname" property="propertyname" value="beanvalue"/
例如:对c对象的两个属性值分别设置为10和20
<jsp:useBean id="c" class="beans.Add" scope="session"/
<jsp:setProperty name="c" property="shuju1" value="10"/>// <%c.setShuju1(10);
<jsp:setProperty name="c" property="shuju2" value="20" />// c.setShuju2(20);%>
····功能:为beanname对象指定的属性propertyname设置指定值beanvalue
2.将单个属性与输入参数直接关联
····设置属性值格式为:<jsp:setProperty name="beanname" property="propertyname"/>
例如:<jsp:setProperty name="c" property="shuju1" />
//在提交页面中存在输入域参数shuju1
<jsp:setProperty name="c" property="shuju2" />
//在提交页面中存在输入域参数shuju1
····功能:将参数名称为propertyname的值提交给同JavaBean属性名成同名的的属性,并自动实现数据类型的转换
3.将单个属性与输入参数间接关联(对于客户端所提交的参数,可以直接给javabean实例中的同名属性赋值)
····设置属性值格式为:<jsp:setProperty name="beanname" property="propertyname"/>
····功能:将请求参数名称为paramname的值给JavaBean的propertyname属性设置属性值
4.将所有的属性与请求参数关联(将所有的属性与请求参数关联实现自动赋值并自动转换数据类型)
····设置属性值格式为:<jsp:setProperty name="beanname" property="*"/>
····功能:将所有的属性与请求参数关联实现自动赋值并自动转换数据类型
注意:如果JavaBean类Add.java中的属性名称(shuju1,shuju2)与input2.jsp中两个输入域属性名称(name="shuju1",name="shuju2")不同就不能给JavaBean对象相应属性设置值。
(8)JavaBean属性---获取JavaBean属性值并显示
在JSP页面显示JavaBean属性值,需要使用<jsp:getProperty/动作标签。
····其格式为:
<jsp:getProperty name="beanname" property="propertyname"/>
说明:jsp:property动作标签是通过JavaBean中的get方法获取对应属性的值
····功能:获取JavaBean对象指定属性的值,并显示在页面上
**(9)访问JavaBean方法-----调用JavaBean业务处理方法**
例如:用jsp:useBean 创建的对象实例c ,通过<·jsp:setProperty>修改属性值后计算并显示和值
加数:<jsp:getProperty name="c" property="shuju1"/
被加数:<jsp:getProperty name="c" property="shuju2"/
和值:<%=c.sum() %>
**(10)多个JSP页面共享JavaBean**
···在JSP中,对于<jsp:useBean/ 动作标记可以使用scope 属性来指定bean存储的位置(作用域),可以让多个JSP页面共享数据。
···共享JavaBean的创建
创建格式:<jsp:useBean id="..." class="..." scope=".."/
其中scope的属性有三种:page request session application
具体每一种的 共享方式解释
1.page共享
默认值使用非共享(作用域为页面)的bean;
2.request 共享
共享作用域为请求的bean,处理当前请求的过程中,bean对象应存储在request对象中,可以通过getAttribute访问到它们;
3.session共享
共享作用域为会话的bean。bena会存储在与当前请求关联的session中,和普通会话对象一样,可以使用getAttribute访问到他;
4.application共享
共享作用域在应用(即作用域为ServletContent)的bean
2017.10.26 JavaWeb----第五章 JavaBean技术的更多相关文章
- 2017.10.26 ECN + product spec+ cypress ble module test+
1 ECN Ecn should be issued when modifying drawing,Copy children BOM of subassembly from BIL if one ...
- JavaWeb——第1章Web技术概述
Web本意是蜘蛛网的意思,现常指Internet的Web技术.Web技术提供了方便的信息发布和交流方式,是一种典型的分布式应用结构,Web应用中的每一次信息交换都要涉及客户端和服务器. 一.Inter ...
- 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...
- 欢迎来怼——第14次Scrum会议(10/26)
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/26 17:00~17:13(总计13min).地点:计 ...
- 2017.11.2 JavaWeb----第六章 Servlet技术
JavaWeb ------第六章 Servlet技术 (1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式.在MVC开发模式中将Web程序的 ...
- 九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <init> 严重: The ResourceConfig instance does not contain any root resource classes.
Tomcat启动错误:九月 26, 2017 10:18:14 上午 com.sun.jersey.server.impl.application.RootResourceUriRules <i ...
- 2017.2.20 activiti实战--第五章--用户与组及部署管理(一)用户与组
学习资料:<Activiti实战> 第五章 用户与组及部署管理(一)用户与组 内容概览:讲解activiti中内置的一套用户.组的关系,以及如何通过API添加.删除.查询. 5.1 用户与 ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(三)部署流程及资源读取
学习资料:<Activiti实战> 第五章 用户与组及部署管理(三)部署流程及资源读取 内容概览:如何利用API读取已经部署的资源,比如读取流程定义的XML文件,或流程对应的图片文件. 以 ...
- 2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源
学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种 ...
随机推荐
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...
- perf命令
@(Linux基础)[perf命令] perf命令 ---- 简介 Perf是内置于Linux内核源码树中的性能剖析(profiling)工具,它基于事件采样原理,以性能事件为基础,支持针对处理器相关 ...
- MAC环境下idea:maven+Spring+Dubbo+Zookeeper简单工程搭建
: 一:安装软件:tomcatZookeeperDubbo+admin 二:工程: 总工程 API Pom.xml:不用引用任何东西 Provider Pom.xml:要denpend ...
- Python字符和编码
1. 字符和编码 背景 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte). 由于计算机是美国人发明的,因此, ...
- python spilt()函数的使用方法
Python中的split()函数的用法 Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后 ...
- readline的用法
with open(r'C:\Users\admin\pycdtest\wanyue\llduizhang_20180207\33_1517970821000304388_119061116',enc ...
- Javascript兼容性问题汇总
一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念, 特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的ou ...
- apache2.2多域名绑定
apache2.2多域名绑定不同目录,将代码放在httpd.conf最后 NameVirtualHost *:80 <VirtualHost *:80> ServerName wo.com ...
- 工作采坑札记:2. Hadoop中MultipleInputs的使用陷阱
1. 背景 近日在一个Hadoop项目中使用MultipleInputs增加多输入文件时,发现相同路径仅会加载一次,导致后续的统计任务严重失真.本博文旨在记录异常的排查及解决方案. 2. 情景重现 ( ...
- 使用Aspose.Cell控件实现Excel高难度报表的生成
1.使用Aspose.Cell控件实现Excel高难度报表的生成(一) http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.html ...