`

JSP学习笔记---常见的几种JavaBean及其使用

阅读更多

引用:http://book.csdn.net/bookfiles/558/10055818584.shtml

6.3  常见的几种Bean使用方法

在实际使用中,有几种常用的Bean,比如表单Bean、页面Bean及共享Bean。在共享Bean中主要包括请求Bean、会话Bean及应用程序Bean。

6.3.1  表单Bean

表单Bean是用来处理表单的。编写Bean,如程序FormBean.java所示。

案例名称:表单Bean使用方法

程序名称:FormBean.java

package std;                                    //封包

import java.io.*;                               //引入包

public class FormBean implements Serializable      //最好实现Serializable接口

{

    //属性声明,都用private修饰

    private int id=0;

    private String nickname="";

   

    //公开的属性

    public void setId(int id)

    {

        this.id=id;

    }

    public int getId()

    {

        return id; 

    }

   

    public void setNickname(String name)

    {

        this.nickname=name;

    }

    public String getNickname()

    {

        return nickname;   

    }

}

这个Bean里面有两个属性,都是公开属性。编写JSP文件,使用这个Bean,如程序from.jsp所示。

案例名称:表单Bean使用方法

程序名称:form.jsp

<form action="" method="post">

    id:<input type=text name="id"><br>

    nickname:<input type=text name="nickname"><br>

    <input type=submit value="submit"/>

</form>

    <jsp:useBean id="st" class="std.FormBean"/>

    <jsp:setProperty name="st"  property="*"/>

    <hr/>

    <jsp:getProperty name="st" property="id"/><br>

    <jsp:getProperty name="st" property="nickname"/>

注意这里的Bean放在包std中,在Eclipse中创建好工程以后的目录结构如图6-10所示。

 

图6-10  使用表单Bean的目录结构

这种方法利用表单中对应name的表单域的值去填充Bean里面相应的属性。例子中,id被填充到Bean的id属性中,nickname被填充到Bean的nickname属性。打开时,读取了id的值0,nickname 默认为空。执行的结果如图6-11所示。

 

图6-11  使用setProperty动作

也可以使用jsp:setProperty动作对每一个属性设置值,如程序form1.jsp所示。

案例名称:表单Bean使用方法

程序名称:form1.jsp

<form action="" method="post">

    myid:<input type=text name="myid"><br>

    mynickname:<input type=text name="mynickname"><br>

<input type=submit value="submit"/>

</form>

    <jsp:useBean id="st" class="std.FormBean"/>

    <jsp:setProperty name="st"  property="id" param="myid"/>

    <jsp:setProperty name="st"  property="nickname" param="mynickname"/>

<hr/>

    <jsp:getProperty name="st" property="id"/><br>

    <jsp:getProperty name="st" property="nickname"/>

在这里,html表单的表单域名称与Bean中的属性并不一致,使用param来把html表单的表单域名称与Bean中的属性对应起来。运行结果如图6-12所示。

图6-12  调用表单Bean

表单Bean用来处理表单的填充。如果没有请求参数和属性对应(比如,修改FormBean,增加一个sex属性),则不采取任何动作,系统不会提供null作为属性的值。这意味着,表单Bean不需要一次填充完毕,可以只填充一部分属性。

自动类型转换并不能像手动类型转换那样能够防止不合法的值。尽管自动类型转换很方便(从请求中获得的值为String类型,自动类型转换保证了上面的String类型的id填充了int类型的id属性),很多开发人员还是避免使用自动转换,选择使用 String类型去定义Bean的每个属性。

Bean属性的名称和请求参数大小写敏感,书写错误就无法调用任何一个动作(id和ID是不同的)。

6.3.2  页面Bean

页面Bean为JSP保留数据,不实现应用程序流中的任何功能。在JSP和Servlet之间,有4种不同的范围值,如表6-1所示。

表6-1  Bean的4种不同范围

范围级别

所影响的API

   

页面page

服务方法中的本地变量

只用于正在处理的Servlet,无法通过这些方法在JSPServlet之间共享数据

请求request

request.setAttribute(key,obj)

request.getAttribute(key)

用于正在处理的Servlet和接受转发控制的ServletJSP

会话session

session.setAttribute(key,obj)

session.getAttribute(key)

用于相同范围内的任何ServletJSP

应用程序application

getServletContext()

setAttribute(key,obj)

getAttribute(key)

对象包含应用程序范围内的对象

6.3.3  共享Bean

可以这样去理解共享Bean的概念:在一个JSP页面(或Servelet)中修改了Bean的属性,然后在另一个页面中读取这个Bean的属性,可以看到这种变化。这是实现数据共享的一种重要方式,也是MVC架构的基础。

Bean一共有4种范围(Scope):page、request、session和application。page对应于本页面的使用,是不可以共享的Bean。后3种都可以共享,范围递增。第1种在request范围内共享,第2种在session范围内共享,第3种在整个应用程序中共享。在共享Bean的应用中,使用forward和include 方法来完成请求的转发和包含。除了这两种方法之外,其他的方法是无效的或不建议使用的。这里所描述的案例是JSP之间共享Bean,也可以是JSP与Servlet之间或Servlet与Servlet之间共享Bean。比如默认的页面Bean不能共享数据,如程序scopePagea.jsp所示。

案例名称:页面Bean

程序名称:scopePagea.jsp

<jsp:useBean id="st" class="std.FormBean"/>

<jsp:setProperty name="st"  property="id" value="999"/>

<jsp:forward page="scopePageb.jsp"/>

执行scopePagea.jsp的时候,自动转移到scopePageb.jsp页面。

案例名称:页面Bean

程序名称:scopePageb.jsp

<jsp:useBean id="st" class="std.FormBean"/>

<jsp:getProperty name="st" property="id"/><br>

scopePageb.jsp主要用来读取页面Bean的属性,运行结果如图6-13所示。

图6-13  Page范围

可以看到,在scopePageb.jsp中读取到的id属性值为0,这说明page范围的Bean无法共享。

1.请求Bean

请求Bean即Request Bean,是在request范围内共享数据的Bean。修改前面的例子,如程序scopeRequesta.jsp所示。

案例名称:请求Bean

程序名称:scopeRequesta.jsp

<jsp:useBean id="st" class="std.FormBean" scope="request"/>

<jsp:setProperty name="st"  property="id" value="999"/>

<jsp:forward page="scopeRequestb.jsp"/>

和页面Bean区别是使用Bean的时候带上了“scope="request"”,页面还是自动转到了scopeRequestb.jsp页面上。

案例名称:请求Bean

程序名称:scopeRequestb.jsp

<jsp:useBean id="st" class="std.FormBean" scope="request"/>

<jsp:getProperty name="st" property="id"/>

程序执行结果如图6-14所示。

图6-14  请求范围

发出请求的JSP或Servlet修改的属性值在接受请求的JSP或Servlet中可以读出来,但是,如果两个程序之间没有发生请求关系的话,数据就无法共享。如果编写一个独立的JSP程序,修改了Bean的属性值,scope为request。再写一个JSP程序,scope为request,它并不接受第一个JSP的请求,无法读取修改了的Bean的属性值。

2.会话Bean

会话Bean属于应用程序的用户会话,与表示方式无关,但是却可以获得指向资源和其他数据的引用,这些数据有助于用户会话来维护和保存状态信息。例如,一个会话Bean可以通过会话保存用户的姓名和地址。

会话Bean即Session Bean,在session 范围内共享数据。它的作用范围比请求Bean大很多。即使两个文件没有发生请求关系,但是也可以共享数据,如程序scopeSessiona.jsp所示。

案例名称:会话Bean

程序名称:scopeSessiona.jsp

<jsp:useBean id="st" class="std.FormBean" scope="session"/>

<jsp:setProperty name="st"  property="id" value="999"/>

<a href="scopeSessionb.jsp">to b</a>

会话Bean使用“scope="session"”进行标识,单击超级链接后,自动转到另外一个页面,如程序scopeSessionb.jsp所示。

案例名称:会话Bean

程序名称:scopeSessionb.jsp

<jsp:useBean id="st" class="std.FormBean" scope="session"/>

<jsp:getProperty name="st" property="id"/>

运行结果如图6-15所示。

图6-15  会话范围

到另外一个页面后,同样可以看到Bean属性的值,如图6-16所示。

图6-16  会话范围

这里必须单击链接进入,否则两个页面不在相同的会话中,无法共享数据。

3.应用程序Bean

应用程序Bean的作用范围比会话Bean要广,可以用来帮助应用程序的所有用户维持状态。与会话Bean相比,使用它们的机会少一些,但是,如果需要减少内存的消耗或提升显示的效果,使用该应用程序Bean是非常有用的,特别是当许多用户需要存取资料而这些资料的获取成本相对较高时。

应用程序Bean即Application Bean,在application 范围内共享数据。它的范围是最大的。两个文件没有发生请求关系,也不是连在一起的页面,但它们之间可以共享数据。因为application范围是整个应用程序中的所有文件,如程序scopeApplicationa.jsp所示。

案例名称:应用程序Bean

程序名称:scopeApplicationa.jsp

<jsp:useBean id="st" class="std.FormBean" scope="application"/>

<jsp:setProperty name="st"  property="id" value="999"/>

这个页面中设置Bean属性的值,试图在另外一个页面中读取出来,其程序如下。

案例名称:应用程序Bean

程序名称:scopeApplicationb.jsp

<jsp:useBean id="st" class="std.FormBean" scope="application"/>

<jsp:getProperty name="st" property="id"/>

先执行scopeApplicationa.jsp,然后再执行scopeApplicationb.jsp,发现数据还是传过来了,如图6-17所示。

图6-17  应用程序范围Bean

<!-- page -->

分享到:
评论

相关推荐

    Servlet &JSP学习笔记NetBeans源代码

    在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...

    JSP&Servlet学习笔记.pdf

    由于这部分内容是电子书中的学习笔记,电子书的内容并未直接给出,因此只能根据电子书的标题“JSP&Servlet学习笔记”和描述来推测可能涉及的知识点,而没有具体的电子书内容可以分析。如需进一步学习,建议查阅相关...

    jsp2.0 学习笔记+完整源码

    提供的"我的JSP学习笔记+源码"包含实际项目中的例子,可以帮助你理解JSP 2.0在实际开发中的应用。通过阅读和运行这些源码,你可以更直观地了解JSP 2.0的各个特性如何在实际场景中工作。 总之,这个资料包为JSP 2.0...

    Servlet&JSP;学习笔记源代码

    这份"Servlet&JSP学习笔记源代码"是由林信良编著,提供了丰富的实例代码,旨在帮助学习者深入理解这两种技术。 Servlet是Java编程语言的一个接口,允许Java代码与HTTP服务器进行交互。它扩展了服务器的功能,使得...

    jsp学习笔记初级.pdf

    jsp学习笔记初级.pdf 本资源摘要信息介绍了JSP(Java Server Pages)学习笔记的初级阶段,涵盖了MVC模式、Java基础知识、JSP、Servlet、Javabean、JDBC、Spring、Struts2、Hibernate等关键技术。 MVC模式 MVC模式...

    jsp考试笔记

    根据提供的文件信息,这里将基于“jsp考试笔记”的标题、描述及部分难以辨识的内容来构建一份关于JSP(JavaServer Pages)的知识点总结。 ### JSP基础概念 #### 定义 JSP(JavaServer Pages)是一种由Sun ...

    jsp笔记帮助学习jsp

    JSP主要有以下几种元素: - **指令(Directives)**:如`&lt;%@page&gt;`、`&lt;%@include&gt;`和`&lt;@taglib&gt;`,它们用来设置页面属性、引入其他文件或注册自定义标签库。 - **脚本元素(Scriptlets)**:`&lt;%...%&gt;`用于编写Java...

    JSP学习笔记

    在"JSP学习笔记"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **JSP基本结构**:JSP文件通常包含HTML或XML标记,以及嵌入的Java代码或者使用JSP指令和动作。例如,`&lt;jsp:include&gt;`用于动态包含页面,`&lt;jsp...

    JavaBean讲解(上)——代码+笔记

    JavaBean是Java编程中的一种重要概念,主要用于封装数据和业务逻辑,便于组件化开发。JavaBean规范定义了一类特殊的Java类,它具有良好的封装性、可重用性和可序列化特性,广泛应用于Web开发、MVC框架以及企业级应用...

    JAVA学习笔记1

    ### JAVA学习笔记1:深入解析J2EE框架与关键技术 #### J2EE模式与Value Object概念 在JAVA学习之旅中,深入理解J2EE(Java 2 Platform, Enterprise Edition)框架是至关重要的一步。J2EE是专为开发企业级应用而...

    java学习笔记(javase)

    8. JavaBean的几种属性 JavaBean是一种符合JavaBeans规范的类,通常有公有的构造函数、getter/setter方法以及封装的属性。例如,一个简单的User JavaBean可能如下: ```java public class User { private String...

    Struts、Spring、Hibernate&Ajax;学习笔记总结

    为了更好地理解和应用 Struts,我们还需要了解几种常见的数据对象及其用途: - **POJO (Plain Old Java Object)**:简单的 Java 对象,具有 getter 和 setter 方法。它是其他数据对象的基础。 - **PO (Persistent ...

    Java web基础学习笔记

    这篇学习笔记将主要围绕JSP展开,探讨其基本概念、语法以及如何在实际开发中运用。 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端的动态内容生成。JSP...

    JSP动态网站开发实践教程(第2版)源代码

    5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:EL提供了一种简洁的方式来访问JavaBean或其他作用域中的数据,而JSTL则是一组预定义的标签库,用于处理常见任务,如循环、条件...

    J2EE学习笔记

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的平台,主要用于构建企业级的分布式应用系统。它提供了服务器端的组件模型,用于处理Web应用...

    7个JSP小项目源代码和笔记资料汇总

    本资源包"7个JSP小项目源代码和笔记资料汇总"显然是一个学习JSP的宝贵资料集合,包含多个实际项目的源代码和相关的学习笔记。 首先,我们来深入了解一下JSP。JSP是由Sun Microsystems(现已被Oracle收购)开发的一...

Global site tag (gtag.js) - Google Analytics