java web开发——第五章 jsp与javabean

目录

前言

5.1 编写和使用Javabean

5.1.1 编写JavaBean

5.1.2 保存bean的字节码

5.1.3 创建和使用bean

5.2 获取和修改bean属性

5.2.1 getProperty动作标记

5.2.2 setProperty动作标记

5.3 bean的辅助类


前言

       第五章将介绍JSP(JavaServer Pages)与JavaBean的结合使用。JSP是一种用于开发动态Web应用程序的Java技术,而JavaBean是一种用于封装数据和业务逻辑的Java类。通过结合使用JSP和JavaBean,可以实现更加灵活和可维护的Web应用程序。

5.1 编写和使用Javabean

5.1.1 编写JavaBean

      编写Javabean就是编写一个Java的类,所以只要会写类就能编写一个Javabean。这个类创建的一个对象称为一个Javabean,简称bean,分配给bean的变量(成员变量),也称bean的属性。为了能让使用bean的应用程序构建工具(比如Tomcat服务器)使用JSP动作标记知道bean的属性和方法,只须在类的方法命名上遵守以下规则:
(1)如果类的成员变量,也称bean的属性的名字是xxx,那么为了获取或更改bean的属性的值,类中必须提供两个方法:

        getXxx(),用来获取属性;

        setXxx(),用来修改属性;

(2)类中定义的方法的访问权限都必须是public的。

(3)类中必须有一个构造方法是public,无参数的。

5.1.2 保存bean的字节码

        ch5 \WEB-INF\classes目录下,根据包名对应的路径,在classes下再建立相应的子目录。比如,包名tom.jiafei对应的路径是tom\jiafei,那么在classes下建立子目录结构:tom\jiafei。
        将创建bean的字节码文件,比如Circle.class,复制到
\WEB-INF\classes\tom\jiafei
        为了调试程序方便,可以直接按照bean的包名将bean的源文件,比如Circle.java,保存在\WEB-INF\classes\tom\jiafei目录中,然后用命令行进入tom\jiafei的父目录classes(不要进入tom或jiafei目录)编译Circle.java:
 

classes>javac tom\jiafei\Circle.java

5.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="bean" class="tom.jiafei.bean" scope="request"/>

特别注意的是,其中"创建bean的类"要带包名 

2、bean的加载原理
在Tomcat服务器管理的pageContent中内置对象中查找是否含有这样的bean(对象)。如果这样的bean(对象)存在,Tomcat服务器就复制这个bean对象给jsp页面,就是常说的Tomcat服务器分配这样的bean给JSP页面

3、bean的有效范围和生命周期

(1)page bean

scope取值为page的bean称为page bean,

bean的有效范围是用户访问的当前页面,存活时间直到当前页面执行完毕。

需要注意的是,不同用户的page bean也是互不相同的,也就是说当两个用户同时访问用一个jsp页面时,一个用户对自己page bean的属性改变不会影响到另一个用户
 

例:负责创建page bean的类是上述的Circle类,page bean 的名字是circle。


<%@ 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>

(2)session bean 

它的有效范围是用户访问的Web服务目录下的各个页面,存活时间是用户的会话期,直到用户的会话完全消失。

(3)request bean

有效范围是用户请求的当前页面,存活时间是从用户的请求产生到请求结束。

简单来说,request bean只在当前页面有效,直到响应结束。

(4)application bean

有效范围是当前Web服务目录下的各个页面,存活时间直到Tomcat服务器关闭。

5.2 获取和修改bean属性

5.2.1 getProperty动作标记

      使用getProperty动作标记可以获得bean的属性值,并将这个值用串的形式发送给用户的浏览器。

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

      其中,name取值是bean的id,用来指定要获取哪个bean的属性的值,property取值是该bean的一个属性的名字。
当JSP页面使用getProperty标记获取属性xxx的值时,必须保证bean有相应的getXxx方法,即对方法的名字的命名有特殊的要求。
 

5.2.2 setProperty动作标记

      可以使用setProperty动作标记来设置一个JavaBean的属性值。例如:

<jsp:setProperty name="person" property="name" value="Bing" />

      该动作标记会调用指定名称的JavaBean(即person)的指定属性(即name)的setter方法,并将指定值(即"Bing")作为参数传递。

5.3 bean的辅助类

      写一个创建bean的类时,除了需要用import语句引入JDK提供的类,可能还需要自己编写一些其他的类,只要将这样类的包名和bean类的包名一致即可(也可以和创建bean的类写在一个Java源文件中)。
      使用一个bean列出Tomcat服务器驻留的计算机上某目录中特定扩展名的文件。创建bean的ListFile类,需要一个实现FilenameFilter接口的辅助类FileExtendName,该类可以帮助bean列出指定扩展名的文件。例如:

<c:set target="{person}" property="name" value="Bing" />

{person.name}

例:使用request bean(Triangle类负责创建)完成三角形的有关数据的处理。例子中的JSP页面提供一个form表单,用户可以通过form表单将三角形三边的长度提交给该页面。用户提交form表单后,JSP页面将计算三角形面积的任务交给一个request bean去完成。

JavaBean

<%@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=o 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"/>

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值