JavaWeb----第五章 JavaBean技术

(1)JavaBean技术

JavaBean技术是javaweb程序的重要组成部分,是一个可重复使用的软件组件,是用Java语言编写的、遵循一定的标准类,,他封装了数据和业务逻辑,供JSP(或servlet,下一章介绍)调用,完成数据封装和数据处理功能。

(2)JavaBean 的设计

设计JavaBean就是编写java类,但与普通类不同,有其特殊的设计规则和要求。

(3)javabean的设计原则

  1. 1javabean是一个公共类;
  2. 2javabean类具有一个公共的无参的构造方法;
  3. 3javabean所有的属性定义为私有的;
  4. 4】在javabean中,需要对每个属性提供两个公共方法,假设属性名是XXX,要提供的两个方法是:
  5. setXXX():用来设置属性XXX的值
  6. getXXX()用来获取属性XXX的值(若包括类型是boolean,则方法名为isXXX());
  7. 5】定义javabean时,通常放在一个命名的包下。

(4).javabean设计案例

例题:设计一个表示圆的JavaBean类Circle.java,并且该JavaBean中具有计算圆的周长和面积的方法

  1. package beans;
  2. public class Circle {
  3. private int number;//圆的编号
  4. private double x;//圆心X的值
  5. private double y;//圆心Y的值
  6. private double radius;//半径
  7. private String color;//绘制颜色
  8. private boolean fill;//是否填充
  9. public int getNumber() //成员number的get方法
  10. {
  11. return number;
  12. }
  13. public void setNumber(int number) //成员number的set方法
  14. {
  15. this.number=number;
  16. }
  17. public double getX()
  18. {
  19. return x;
  20. }
  21. public void setX(double x)
  22. {
  23. this.x=x;
  24. }
  25. public double getY()
  26. {
  27. return y;
  28. }
  29. public void setY(double y)
  30. {
  31. this.y=y;
  32. }
  33. public double getRadius()
  34. {
  35. return radius;
  36. }
  37. public void setRadius(double radius)
  38. {
  39. this.radius=radius;
  40. }
  41. public String getColor()
  42. {
  43. return color;
  44. }
  45. public void setColor(String color)
  46. {
  47. this.color=color;
  48. }
  49. public boolean isFill() //注意boolean类型属性的get/set方法以及该属性的声明
  50. {
  51. return fill;
  52. }
  53. public void setFill(boolean fill)
  54. {
  55. this.fill=fill;
  56. }
  57. public Circle(){}
  58. //公共无参构造方法,这里使用的是默认构造方法
  59. public double circleArea()
  60. {
  61. return Math.PI*radius*radius;
  62. }
  63. public double circleLength()
  64. {
  65. return 2*Math.PI*radius;
  66. }
  67. }

(5)在JSP中使用JavaBean

用JSP标签来访问JavaBean包括以下几种

  1. <jsp:useBean>:声明并创建JavaBean对象实例;
  2. <jsp:serProperty>:对JavaBean对象的指定属性设置值;
  3. <jsp:getProperty>:获取JavaBean对象指定属性设置值,并显示自网页上。

例题:设计Web程序,计算任意两个整数的和,并在网页上显示结果

1.首先设计实现数据求和的JavaBean类Add.java

  1. package beans;
  2. public class Add {
  3. private int shuju1;
  4. private int shuju2;
  5. public int getshuju1(){return shuju1;}
  6. public int getShuju1() {
  7. return shuju1;
  8. }
  9. public void setShuju1(int shuju1) {
  10. this.shuju1 = shuju1;
  11. }
  12. public int getShuju2() {
  13. return shuju2;
  14. }
  15. public void setShuju2(int shuju2) {
  16. this.shuju2 = shuju2;
  17. }
  18. public Add(){}
  19. public int sum(){return shuju1+shuju2;}
  20. }

2.设计提交任意两个整数的JSP页面(input.jsp)

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>提交任意两个整数的页面</title>
  6. </head>
  7. <body>
  8. <h3>按下列格式要求,输入两个整数:</h3><br>
  9. <form action="show.jsp" method="post"></form>
  10. 加数:<input name="shuju1"><br><br>
  11. 被加数:<input name="shuju2"><br><br>
  12. <input type="submit" value="提交">
  13. </body>
  14. </html>

3.设计显示结果的页面(show.jsp)

  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>利用JavaBean+JSP求两数和</title>
  6. <body>
  7. <jsp:useBean id="c" class="beans.Add" scope="request"/>
  8. <jsp:setProperty name="c" property="*"/> /为c对象的属性赋值
  9. <p>调用jsp:property 做标签以及求和方法获取数据并显示:<br/>
  10. <jsp:getProperty name="c" property="shuju1"/>+ <jsp:getProperty name="c" property="shuju2"/>
  11. =<%=c.sum() %><br>
  12. </p>
  13. <p>调用使用类的方法获取数据并显示:<br>
  14. <%=c.getShuju1() %>+<%=c.getShuju2() %>=<%=c.sum()%><br> //显示属性值
  15. </p>
  16. </body>
  17. </html>

(6)声明JavaBean对象

1.声明JavaBean对象,需要用<jsp:useBean)的动作标签

2.声明格式:

  1. <jsp:useBean id="对象名" class="类名" scope="有效范围"/>
  2. 使用说明:
  3. ···class属性:用来指定JavaBean的类名决定路径,例如:class=beans.Add
  4. ···id属性:指定所要创建的对象名称
  5. ···scope属性:指定所创建对象的作用范围,其取值有四个:页面page【默认值】、请求request、会话session、应用application,

3.要在show.jsp页面中,创建一个Add类对象c且其范围是session,则需要语句:

  1. <jsp:useBean id="c" class="beans.Add" scope="session"/>
  2. <jsp:useBean id="c" class="beans.Add"/>

(7)访问JavaBean属性------设置JavaBean属性值

设置JavaBean属性值需要<·jsp:setProperty>动作标签。而<·jsp:setProperty>动作标签是通过JavaBean中的set方法给相应的属性设置的值。它有四种设置方式:

<·jsp:setProperty>有四种设置方式

  1. 1.简单JavaBean的属性设置
  2. ····设置属性值格式:<jsp:setProperty name="beanname" property="propertyname" value="beanvalue"/
  3. 例如:对c对象的两个属性值分别设置为1020
  4. <jsp:useBean id="c" class="beans.Add" scope="session"/
  5. <jsp:setProperty name="c" property="shuju1" value="10"/>// <%c.setShuju1(10);
  6. <jsp:setProperty name="c" property="shuju2" value="20" />// c.setShuju2(20);%>
  7. ····功能:为beanname对象指定的属性propertyname设置指定值beanvalue
  8. 2.将单个属性与输入参数直接关联
  9. ····设置属性值格式为:<jsp:setProperty name="beanname" property="propertyname"/>
  10. 例如:<jsp:setProperty name="c" property="shuju1" />
  11. //在提交页面中存在输入域参数shuju1
  12. <jsp:setProperty name="c" property="shuju2" />
  13. //在提交页面中存在输入域参数shuju1
  14. ····功能:将参数名称为propertyname的值提交给同JavaBean属性名成同名的的属性,并自动实现数据类型的转换
  15. 3.将单个属性与输入参数间接关联(对于客户端所提交的参数,可以直接给javabean实例中的同名属性赋值)
  16. ····设置属性值格式为:<jsp:setProperty name="beanname" property="propertyname"/>
  17. ····功能:将请求参数名称为paramname的值给JavaBeanpropertyname属性设置属性值
  18. 4.将所有的属性与请求参数关联(将所有的属性与请求参数关联实现自动赋值并自动转换数据类型)
  19. ····设置属性值格式为:<jsp:setProperty name="beanname" property="*"/>
  20. ····功能:将所有的属性与请求参数关联实现自动赋值并自动转换数据类型
  21. 注意:如果JavaBeanAdd.java中的属性名称(shuju1shuju2)与input2.jsp中两个输入域属性名称(name="shuju1",name="shuju2")不同就不能给JavaBean对象相应属性设置值。

(8)JavaBean属性---获取JavaBean属性值并显示

在JSP页面显示JavaBean属性值,需要使用<jsp:getProperty/动作标签。

····其格式为:

  1. <jsp:getProperty name="beanname" property="propertyname"/>
  2. 说明:jsp:property动作标签是通过JavaBean中的get方法获取对应属性的值
  3. ····功能:获取JavaBean对象指定属性的值,并显示在页面上
  4. **(9)访问JavaBean方法-----调用JavaBean业务处理方法**
  5. 例如:用jsp:useBean 创建的对象实例c ,通过<·jsp:setProperty>修改属性值后计算并显示和值

加数:<jsp:getProperty name="c" property="shuju1"/

被加数:<jsp:getProperty name="c" property="shuju2"/

和值:<%=c.sum() %>


  1. **(10)多个JSP页面共享JavaBean**
  2. ···在JSP中,对于<jsp:useBean/ 动作标记可以使用scope 属性来指定bean存储的位置(作用域),可以让多个JSP页面共享数据。
  3. ···共享JavaBean的创建
  4. 创建格式:<jsp:useBean id="..." class="..." scope=".."/
  5. 其中scope的属性有三种:page request session application
  6. 具体每一种的 共享方式解释

1.page共享

默认值使用非共享(作用域为页面)的bean;

2.request 共享

共享作用域为请求的bean,处理当前请求的过程中,bean对象应存储在request对象中,可以通过getAttribute访问到它们;

3.session共享

共享作用域为会话的bean。bena会存储在与当前请求关联的session中,和普通会话对象一样,可以使用getAttribute访问到他;

4.application共享

共享作用域在应用(即作用域为ServletContent)的bean

2017.10.26 JavaWeb----第五章 JavaBean技术的更多相关文章

  1. 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 ...

  2. JavaWeb——第1章Web技术概述

    Web本意是蜘蛛网的意思,现常指Internet的Web技术.Web技术提供了方便的信息发布和交流方式,是一种典型的分布式应用结构,Web应用中的每一次信息交换都要涉及客户端和服务器. 一.Inter ...

  3. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  4. 欢迎来怼——第14次Scrum会议(10/26)

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/26  17:00~17:13(总计13min).地点:计 ...

  5. 2017.11.2 JavaWeb----第六章 Servlet技术

    JavaWeb ------第六章 Servlet技术 (1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式.在MVC开发模式中将Web程序的 ...

  6. 九月 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 ...

  7. 2017.2.20 activiti实战--第五章--用户与组及部署管理(一)用户与组

    学习资料:<Activiti实战> 第五章 用户与组及部署管理(一)用户与组 内容概览:讲解activiti中内置的一套用户.组的关系,以及如何通过API添加.删除.查询. 5.1 用户与 ...

  8. 2017.2.28 activiti实战--第五章--用户与组及部署管理(三)部署流程及资源读取

    学习资料:<Activiti实战> 第五章 用户与组及部署管理(三)部署流程及资源读取 内容概览:如何利用API读取已经部署的资源,比如读取流程定义的XML文件,或流程对应的图片文件. 以 ...

  9. 2017.2.28 activiti实战--第五章--用户与组及部署管理(二)部署流程资源

    学习资料:<Activiti实战> 第五章 用户与组及部署管理(二)部署流程资源 内容概览:讲解流程资源的读取与部署. 5.2 部署流程资源 5.2.1 流程资源 流程资源常用的有以下几种 ...

随机推荐

  1. GM MDI Tech 3 VS GM tech 2

    Many customers ask for this question: what is the difference between GM tech 2 and GM MDI Tech 3 sca ...

  2. 2.1 GO 变量定义

    GO有四种数据类型,数字.布尔.字符.派生类型:这里使用前三种简单类型来说明变量的定义与使用 package main import "fmt" var ( aa = 1 bb = ...

  3. 创建有关hbase数据库的项目时所遇到的问题

    1.在以前使用其他数据库时,经常会使用id自增来做主键,但是hbase数据库中不知道怎么来设置自增主键,所以我打算不要id自增主键.然后删除原来的表,重新创建表. 删除表语句: 用drop命令可以删除 ...

  4. java后台获取服务器相对路径,获取当前时间yyyyMMddHHmmssSSS

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS"); Date date = new Date( ...

  5. KeyStore相关

    http://blog.csdn.net/liuquan0071/article/details/50318405 一. HTTPS概念 1. 简介 HTTPS(全称:Hypertext Transf ...

  6. RNN学习资料

    1. Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano htt ...

  7. MATLAB矩阵操作和算术运算符

    矩阵的表示 矩阵之间用空格或者是逗号间隔 矩阵可以拼接(可以用矩阵拼接) 实部矩阵和虚部矩阵构成复数矩阵,一一对应. 冒号表达式: 格式: e1:e2:e3 e1表示初始值    e2表示步长   e ...

  8. 批量处理标签属性中document.getElementsByName()的替代方案

    背景 今天在逛知乎时候,看到一个JavaScript方面的问题: 最近在学习JavaScript DOM,就好奇地查阅资料,以及请教学长,得到下面解答: http://www.w3help.org/z ...

  9. 封装WebService的APM为Async、Await模式利于Asp.Net页面调用

    Wcf针对Async.Await指令直接可以返回Task<T>结果,但是老旧的系统中还是会有很多是在用Soap的Webservice.直接在Asp.Net页面调用APM方法确实比较麻烦,其 ...

  10. easyui combobox with checkbox item

    $('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...