java web开发——第五章JSP与JavaBean

系列文章目录

前言

 JavaBean特点:

1.1编写和使用JavaBean

1.1.1编写JavaBean

1.1.2保存bean的字节码

1.1.3创建与使用bean

1.2获取和修改bean的属性

1.2.2setProperty 动作标记

1.3bean的辅助类

1.4JSP与bean结合的简单例子

总结


前言

本章主要内容是编写和使用JavaBean、获取和修改bean的属性、bean的辅助类和JSP与bean结合的简单例子,难点是获取和修改bean的属性。


 JavaBean特点:

JavaBean是一个可重复使用的软件组件,基于Java语言。
  可以实现代码的重复利用;易编写、易维护、易使用;可以在任何安装了Java运行的平台上使用,而无须重新编译。


1.1编写和使用JavaBean

1.1.1编写JavaBean

为了能让使用bean的应用程序构建工具使用JSP动作标记知道bean的属性和方法,在类的命名要遵守以下规则:
(1)getXxx()——获取属性xxx
setXxx()——修改属性xxx
后缀首字母大写
(2)类中定义的方法的访问权限都必须是public
(3)类中必须有一个构造方法是public、无参数的。
源文件须使用package语句给出包名,如:package tom.jiafei
保存源文件时,“保存类型”为“所有文件”,“编码”为“ANSI”

package tom.jiafei;public classCircle.
double radius;public Circle(){
radius = 1:
public double getRadius()return radius;
public void setRadius(double newRadius)radius = newRadius;
public double circleArea()
return Math.PI *radius * radius:
public double circleLength()
return 2.0*Math.PI * radius:

1.1.2保存bean的字节码

为了使JSP 页面使用 bean,Tomcat 服务器必须使用相应的字节码文件创建一个对象,即创建一个 bean。为了让 Tomcat 服务器能找到字节码文件,字节码文件必须保存在特定的目录中。

1.1.3创建与使用bean

1.使用 bean
  使用JSP动作标记 useBean 加载使用 bean,语法格式是

<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 的类”要带有包名,例如:

lass = "tom.jiafei.Circle"

page bean 有效范围是当前页面,存活到当前页面执行完毕,分配给每个JSP页面的page bean是互不相同的,不同用户的page bean 也是互不相同的。
session bean有效范围是用户的Web服务目录下的各个页面,存活到会话结束,不同用户的page bean 也是互不相同的。
request bean有效范围是用户请求的当前页面,存活到请求结束,不同用户的page bean 也是互不相同的。
application bean有效范围是当前Web服务目录下的各个页面,存活到Tomcat服务器关闭,不同用户的application bean都是相同的。

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<style>
   #textStyle{
      font-family:宋体;font-size:36;color:blue 
   }
</style>
<HTML><body bgcolor = #ffccff>
<p id = "textStyle">
<jsp:useBean id="circle" class="tom.jiafei.Circle" scope="page" />
<%--通过useBean标记,获得有效期限是page,名字是circle的bean --%>
圆的初始半径是:<%=circle.getRadius()%>
<%  double newRadius =100;  
    circle.setRadius(newRadius);   //修改半径。
%>
<br>修改半径为<%= newRadius %>
<br><b>圆的半径是:<%=circle.getRadius()%>
<br><b>圆的周长是:<%=circle.circleLength()%>
<br><b>圆的面积是:<%=circle.circleArea()%>
</p></body></HTML>

1.2获取和修改bean的属性

获取或修改 bean 的属性还可以使用JSP 动作标记getProperty、setProperty,这种情况下,要求创建 bean 的类遵守 setXxx 和 getXxx 等规则,当JSP页面使用 getProperty、setProperty 标记获取或修改属性 xxx 时,必须保证 bean有相应的getXxx和 setXxx 方法,即对方法名字的命名有特殊的要求。

1.2.1getProperty动作标记

getProperty 动作标记的语法格式是:

< jsp;getProperty name = "bean 的 id " property = "bean 的网性”/>
或
<jsp:getProperty name = "bean 的阵锻步E哀id "property = "bean 的属性">

其中,name 取值是 bean 的 id,用来指定要获取哪个 bean 的属性的值,property 取值是该</jsp:getProperty>。

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

1.2.2setProperty 动作标记

使用 setProperty 动作标记可以设置 bean 的属性值。使用这个标记之前,须使用 useBean 标记得到一个相应的 bean。
setProperty 动作标记可以通过两种方式设置 bean 属性值

(1) 将 bean 属性值设置为一个表达式的值或字符序列。

<jsp:setProperty name ="bean 的 id "property ="bean 的属性value ="<%= expression%>"/>
<jsp:setProperty name = "bean 的 id "property = "bean 的属性value="字符序列”/>

   value 给出的值的类型要和 bean 的属性的类型一致。
(2) 通过 HTTP 表单的参数值来设置 bean 的相应属性值

1.用form 表单的所有参数值设置 bean 相对应属性值的使用格式如下

<jsp:setProperty name ="bean 的 id 的名字"property="* "/>

在setProperty标记的上述用法中不具体指定 bean 属性值将对应 form 表单中哪个参数指定的值,系统会自动根据名字进行匹配对应,但要求 bean 属性的名字必须在 form 表单中有名称相同的参数名字相对应,Tomcat 服务器会自动将参数的字符串值转换为 bean 相对应的属性值.

2.用form 表单的某个参数的值设置 bean 的某个属性值的使用格式如下

<jsp:setProperty name ="bean 的名字"property="属性名"param ="参数名”/>

Java 语言将字符序列转化为其他数值类型的方法如下
·转化到 int: Integer.parselnt(Sting s)
转化到 long:Long.parseLong(Sting s)
转化到 float:Float.parseFloat(Sting s)
转化到 double: Double.parseDouble(Sting s)
这些方法都可能发生 NumberFormatException 异常,例如当试图将字符序列ab23 转化为int型数据时就发生了NumberFormatException。
注:用form表单设置bean 的属性值时,只有提交了表单,对应的 setProperty 标记才会被执行。

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<% request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="phone" class="tom.jiafei.Goods" scope="request"/>
<HTML><body bgcolor = #ffccff>
<style>
   #textStyle{
      font-family:宋体;font-size:20;color:blue 
   }
</style>
<p id = "textStyle">
<form action="" Method="post" >
手机名称:<input type=text id=textStyle name="name">
<br>手机价格:<input type=text id=textStyle name="price"/>
<br><input type=submit id=textStyle value="提交给本页面"/>
</form>
<form action="example5_4_b.jsp" Method="post" >
手机名称:<input type= text name="name" id=textStyle>
<br>手机价格:<input type=text name="price" id=textStyle>
<br><input type=submit id=textStyle value="提交给example5_4_b.jsp页面">
</form>
<jsp:setProperty name="phone" property="name" param ="name" />
<jsp:setProperty name="phone" property="price" param ="price"/>
<br><b>名称:<jsp:getProperty name="phone" property="name"/>
<br><b>名称:<%= phone.getName()%><br>
<br><b>价格:<jsp:getProperty name="phone" property="price"/>
<br><b>价格:<%=phone.getPrice()%>
</p></body></HTML>
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<% request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="phone" class="tom.jiafei.Goods" scope="page"/>
<HTML><body bgcolor= cyan>
<p style="font-family:黑体;font-size:20;color:red"> 
<jsp:setProperty name="phone" property="name" param ="name" />
<jsp:setProperty name="phone" property="price" param ="price"/>
<br><b>名称:<jsp:getProperty name="phone" property="name"/>
<br><b>名称:<%= phone.getName()%><br>
<br><b>价格:<jsp:getProperty name="phone" property="price"/>
<br><b>价格:<%=phone.getPrice()%>
</p></body></HTML>

1.3bean的辅助类

在写一个创建 bean 的类时,除了需要用 import 语句引人 JDK 提供的类,可还需要自己编写一些其他的类,只要将这样类的包名和 bean 类的包名一致即可可以和创建 bean 的类写在一个 Java 源文件中)。

package tom.jiafei;
import java.io.* ;
lass FileExtendName implements FilenameFilter {
String str = null;
FileExtendName (String s){
str="."+ s;
}
public boolean accept(File dir,String name) {
return name.endsWith(str);
 }
}
lic class ListFile{
String extendsName = null;
String[] allFileName = null;
String dir = null;
public void setDir(String dir){
this.dir = dir;
}
public String getDir() {
return dir;
}
public void setExtendsName(String s){
extendsName = s;
}
public String getExtendsName(){
return extendsName;
}
public String[]getAllFileName(){
if(dir!= null){
File mulu=new File(dir);
FileExtendName help = new FileExtendName(extendsName);
allFileName=mulu.list(help);
      }
return allFileName;
   }
}
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<% request.setCharacterEncoding("utf-8");
%>
<style>
   #textStyle{
      font-family:宋体;font-size:36;color:blue 
   }
</style>
<jsp:useBean id="file" class="tom.jiafei.ListFile" scope="request"/>
<HTML><body id=textStyle bgcolor = #ffccff>
<form action="" Method="post">
输入目录名(例如D:/2000)<input type=text name="dir" id=textStyle size=15/><br>
输入文件的扩展名(例如java)<input type=text name="extendsName" id=textStyle size=6>
<input type=submit id=textStyle value="提交"/>
</form>
<jsp:setProperty name="file" property="dir" param="dir"/>
<jsp:setProperty name="file" property="extendsName" param="extendsName"/>
<br><b>目录 <jsp:getProperty name="file" property="dir"/>中
 扩展名是 <jsp:getProperty name="file" property="extendsName"/> 的文件有:
<% String [] fileName = file.getAllFileName();
     if(fileName!=null) {
       for(int i=0;i<fileName.length;i++) {
          out.print("<br>"+fileName[i]); 
       } 
     }
%>
</body></HTML>

1.4JSP与bean结合的简单例子

package red.star;public class Triangle{
double sideA= -1,sideB = -1,sideC = -1;
String area;
boolean isTriangle;
public void setSideA(double a)sideA =a;
public double getSideA() {
return sideA;
}
public void setSideB(double b) {
sideB = b;
}
public double getSideB() {
return sideB;
}
public void setSideC(double c) {
sideC = c;
}
public double getSideC() {
return sideC;
}
public String getArea() {
double p=(sideA+ sideB+ sideC)/2.0;
double result= Math sgrt(p* (p- sidea)* (p- sideB) * (p-sideC));//保留2位小数
if(isTriangle){
area = String,format(”.2f”,result);
}
return area;
}
public boolean getIsTriangle(){
if(sideA < sideB + sideCassideB < siden + sideCassideC < sideh+ sideB)
isTriangle = true;
else
isTriangle = false,return isTriangle;
  }
}
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<style>
   #textStyle{
      font-family:宋体;font-size:36;color:blue 
   }
</style>
<% request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="triangle" class="red.star.Triangle" scope="request"/>
<HTML><body id = textStyle bgcolor=#ffccff>
<form action="" method="post" >
输入三角形三边:
边A:<input type=text name="sideA" id = textStyle value=0 size=5/>
边B:<input type=text name="sideB" id = textStyle value=0 size=5/>
边C:<input type=text name="sideC" id = textStyle value=0 size=5/>
<br><input type=submit id = textStyle value="提交"/>
</form>
<jsp:setProperty name="triangle" property="*"/>
三角形的三边是:
<jsp:getProperty name="triangle" property="sideA"/>,
<jsp:getProperty name="triangle" property="sideB"/>,
<jsp:getProperty name="triangle" property="sideC"/>.
<br><b>这三个边能构成一个三角形吗?<jsp:getProperty name="triangle" property="isTriangle"/>
<br>面积是:<jsp:getProperty name="triangle" property="area"/></b>
</body></HTML>

总结

JavaBean 是一个可重复使用的软件组件,是遵循一定标准、用 Java 语言编写的一个类,该类的一个实例称作一个 JavaBean
一个JSP页面可以将数据的处理过程指派给一个或几个 bean 来完成,我们在JSP页面中调用这些 bean 即可。在JSP 页面中调用 bean 可以将数据的处理代码从页面中分离出来,实现代码复用,更有效地维护一个 Web 应用。
bean 的生命周期分为 page、request、session 和 application。

以上就是本章所有内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值