JavaBean详解---JavaBean的保存范围和删除JavaBean

JavaBean的保存范围

在<jsp:useBean>的指令上存在了一个scope属性,表示的是一个JavaBean的保存范围,保存的范围一共是四种

1):page:保存在一页的范围之中,跳转之后此JavaBean无效;

2):request:一个JavaBean对象可以保存在一次服务器跳转范围中;

3):session:在一个用户的操作范围中保存,重新打开浏览器的时候才会声明新的JavaBean。

4):application:在整个服务器上保存,服务器关闭时才会消失。


为了更好的验证JavaBean的范围,下面做一个简单的JavaBean,用于进行计数的操作

下面分别来观察属性范围:

【page_bean01.jsp的内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>

<html>

<head><title>javabean</title></head>

<jsp:useBean id="cou" scope="page" class="com.skewrain.demo.Count"/>

<body>

      <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3>

</body>

</html>

执行此代码的结果如下:


服务器端的结果如下:



【page_bean02.jsp的内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>

<html>

<head><title>javabean</title></head>

    <jsp:useBean id="cou" scope="page" class="com.skewrain.demo.Count"/>

<body>

    <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3>

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

</body>

</html>

我们刷新原来的执行页面,结果如下图所示:


服务器端一次增加了两个输出:


现在的对象只在一个JSP文件中保存,那么要想在一次跳转中保存,肯定就是request属性范围。

 

【request_bean01.jsp的内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>

<html>

<head><title>javabean</title></head>

    <jsp:useBean id="cou" scope="request" class="com.skewrain.demo.Count"/>

<body>

    <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3>

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

</body>

</html>

【request_bean02.jsp的内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>

<html>

<head><title>javabean</title></head>

    <jsp:useBean id="cou" scope="request" class="com.skewrain.demo.Count"/>

<body>

    <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3>

</body>

</html>

执行此代码的结果如下所示:



以此类推:

1):如果换为session属性,那么每刷新一次,那么次数就增加1,但是当新打开一个浏览器,次数又从0开始,而且,服务器重新启动的话,就创建了一个新的session。

2):如果换为application的话,那么每刷新一次,那么次数就增加1,但是当新打开一个浏览器,访问次数是接着上次的浏览器的访问次数增加,而且,服务器重新启动的话,就创建了一个新的session。


小结:

JavaBean一共包含了四种属性保存范围,这一点与JSP中的四种属性保存范围是一样的,唯一的区别就是page范围不用像在JSP那样通过pageContext指定了。


删除JavaBean

JavaBean虽然使用了<jsp:useBean>标签进行创建,但是其操作依靠的仍然是四种属性范围,如果一个JavaBean不再使用的话,则可以直接使用四种属性范围的removeAttribute()方法进行删除。

1):删除page范围的JavaBean可以使用:

     pageContext.removeAttribute(JavaBean名称)

2):删除request范围的JavaBean可以使用:

     request.removeAttribute(JavaBean名称)

3):删除session范围的JavaBean可以使用:

     session.removeAttribute(JavaBean名称)

4):删除application范围的JavaBean可以使用:

     application.removeAtttribute(JavaBean名称)。

例如:<% session.removeAttribute(“con”)%>

【remove_session.jsp内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>

<html>

<head><title>javabean</title></head>

    <jsp:useBean id="cou" scope="request" class="com.skewrain.demo.Count"/>

<body>

<h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3>

    <% session.removeAttribute(con)%>

</body>

</html>

每次刷新之后都会有一个新的对象产生,那么可以得出一个结论,每次的JavaBean声明id之后就是将对象保存在了属性范围之中。


小结:

JavaBean的删除依然使用了四种属性范围中提供的删除范围,所以实际上JavaBean就相当于是一个保存在指定范围中的属性。而且JavaBean的最大好处依然是结合表单来体现的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我的项目名字是生入学系统,是为了适应信息时代发展,提高学校的工作效率和办学水平,实现现代化大学的运行机制和高水平的管理,体现大学计算机的特色,使计算机的使用成为学校对学生进行有效管理的重要组成部分。用计算机来管理生报到可以避免不必要的资源浪费。用计算机来管理生报到可以作到在生前来报到时给其分配相关资源,存储其相关信息则可以避免所分配的学号、床位号间呈现空缺的现象也节省了教务处工作人员的工作强度,避免了提前去做生的相关分配工作。 利用权限管理使该系统对学生信息的录入提取更安全,对学生档案管理的更改更方便,比纸质保存时间更长,查询过程更便利。 适用范围是各大院校在招学生的时候录入学生的信息,学生分配班级,及学生入学当天的报道、缴纳学费,分配宿舍等各种生入学需要办理的手续录入和分配,当然在录入的情况下也实现了特出情况处理的端口,比如学生推迟入学,学生在缴纳费用的时候出现意外情况需要推迟缴纳费用、或者学生不在学校住宿等情况发生时系统可以更改学生一些信息来实现这些情况的应急。该系统页面适应学校分为,选择淡绿色为基本色调。操作简单,通过在浏览器上登录即可操作,各种界面力求简介大方,我觉得只要用电脑上过网的人看一眼就能上手。 项目的第一个界面是登录界面。该界面的后台对不同身份的帐号登录进行了相应处理已达到对不同部门分工的合理配合,即互不越界,各司其职。这样学校基本上就可以分为教务处及教务处下分的系专业科室、财务科、宿舍管理科,最后还有可以统计历年学生专业状况、大致信息的一个查询功能,这些权限可以通过与学校协商直接分配,所以这个板块的松藕性特别好,很通用,利于普及。 第二个界面进入生管理系统,此界面分为生管理、分班管理、床位分配、缴费信息、查询统计、信息管理六个板块。分别负责不同功能录入、分配及修改。 第一个功能生管理包含生信息录入、生信息查询、批量删除修改,生录入主要是录入学生的基本信息, 为了使用便利我们的系统支持文件的直接导入,从而一步到位的批量录入信息。生信息查询分别提供了按学号精准查询和按专业、姓名、民族及学制的模糊查询。批量删除和修改提供了对在校生批量的删改。 第二个功能为分班管理,为学生录入信息的时提前在院校的意愿下分班,院校可根据自己的实际情况来决定分配为几个班,系统自动将学生平均分配到相应班级里,当然在特殊情况下院方可以单独调去学生分配班级。 第三个功能为床位分配,也是我专门负责的板块,功能包括预分配床位给院系、院系预分床位浏览、床位分配(指定)、床位分配(随机)、批量分配(连续编号)、批量分配(设置条件)、舍长指派、未分配床位学生查询、床位调整、退床、学生住宿查询、学生住宿名单、宿舍标签打印的功能。床位预分配床位是将床位以同专业学生就近原则分配;院系预分配床位浏览提供了对预分配的预览及打印,方便了学校对已分配信息的公布;床位分配提供了单个床位调动的功能,以防止过多的空床位或者特殊情况的调剂;批量分配可通过设置条件让分配更接近院方意愿,从而给客户更多的变动空间;舍长指派使的责任细化到每个宿舍,从而特殊情况下舍管可以第一时间联系到宿舍负责人;未分配床位学生查询为学校在宿舍不足等情况下提供了统计功能;床位调整是在学生入住或者分配完成后对单个学生进行调配,使系统更加人性化;退床是在学生毕业,或者特殊情况下学生需要的时候可以使舍管把床位信息及时的反馈给系统,以达到对床位信息更合理的调配;学生宿舍查询里面分别有精准查询和模糊查询,在院方需要的情况下可以查询到某位学生或者某个专业的学生的住宿信息;学生宿舍名单查询支持导出,可以把宿舍名单打印出来以安排学生值日等哪个方面需求;宿舍标签打印是舍管向上提交书面资料必要的途径。 第四个板块是缴费查询是学生入学时需要缴纳的费用明细,与教务处学生信息直接挂钩,既从教务处拿到学生ID以提供学生应缴费用,又通过缴费过程直接反馈给系统学生缴费情况,其也包含了学生缴费时打印凭条等各种必要信息输出。 第五个板块查询统计其包含学生信息统计、生报道查询、按院系专业统计查询及综合查询的功能,院校可以从软件得到历年或者当前学生报道情况,以实现学生信息的的统计,便利学校大方向的信息随时提取,方便学校领导对学校发展方向提供有力数据整合。 第六个板块信息管理主要运用于学校教务内部的一些公告的公布,也支持文档下载以直接输出公布信息。 该项目运用SSH2技术,使代码更有逻辑性,方便了后期维护的需要。运用jsp提供显示,使用浏览器即可登录,使操作更简单易上手;分配不同权限使院校部门分工更明确,互不干扰协调运作。它基于Struts MVC模式,控制层由Struts2实现,逻辑层和事务层由JavaBean实现 ,数据访问采用Hibernate技术,表现层采用JSP、HTML、Jav
Javabean的生命周期涉及到初始化和销毁两个阶段。在Spring,bean的生命周期由容器进行管理。 对于单例Bean,默认情况下,Spring容器只创建一个实例,并且该实例是线程安全的。这是因为单例Bean是基于Spring容器的BeanFactory,而不是基于JVM的单例。因此,在非分布式服务情况下,单例Bean可以保证线程安全。 另一方面,对于作用域为prototype的Bean,Spring容器在初始化、配置、装饰或装配完一个实例后,将它交给客户端,并且不再跟踪其生命周期。容器在关闭时不调用该Bean的destroy方法。对于prototype作用域的Bean,Spring不能负责其整个生命周期,因此,清除和释放该Bean所持有的资源是客户端代码的责任。可以通过使用Bean的后置处理器来实现释放资源。 在Spring容器,还存在其他作用域,如request作用域。在每个HTTP请求,都产生一个的request作用域的Bean,该Bean仅在当前请求内有效。 总结来说,单例Bean在多线程程序下是线程安全的,而作用域为prototype的Bean的生命周期由客户端代码控制。Spring容器对于不同作用域的Bean有不同的管理方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring(三):JavaBean的生命周期](https://blog.csdn.net/weixin_38246518/article/details/106131083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [java面试-Springbean的生命周期(详解)](https://blog.csdn.net/qq_41810415/article/details/127157805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值