上节课我们是讲解了request, response, session, application 等内置对象,有了它们,我们就可以编写一个完整的应用程序了。 我们来看ebank这个小应用程序的编写。
在这个应用程序中,我们已经注意到用了java bean. 什么是java bean 呢?
Java bean 它是java写的软件组件。比如我们在实验课上的关于银行的几个组件,Bank, BankAccount, BankTransaction等都是组件,同学发现它们和正常的java类是一样的,对的,不同的地方是,为了让它们容易被jsp调用,对java的类加了限制,就是java bean
在jsp中使用java bean的时候,用这样的语句: <jsp:useBean id=“myBank” class=“ebank.Bank” scope=“application”> 相当于你调用了java的语句 ebank.Bank myBank = new ebank.Bank(); 这样在你的application范围内,都会存在这个myBank对象,它一直在那里,直到服务器关闭,把应用程序也关闭为止。
而我们可以用jsp的几个标记来设置和提取bean的属性 <jsp:setProperty name=“myBank” property=“name”> <jsp:getProperty name=“myBank” property=“name”> 这两个标记都要放在<jsp:useBean…>后使用
Java bean 要求你对bean 的属性能设置和提取。在实现bean的类中间,规定要有相应的属性的设置和提取方法。 例如上例中 class Bank { ….. void setName(String n) String getName() }
关于bean的生存周期: page, request, session, application page: 就是和该页面一起存亡,一般一个页面被调用后,就可以认为该页面的对象无效了。 request:就是和当前的request的生命周期一样,如果当前的request被转给其他的页面,那和这个request一起的bean会被转给新页面。 session: 和当前的客户服务器的会话一起的。 application:只要当前的应用程序还在启用,就存在这个bean
我们书上p153-158页有对这四种生存周期的详细例子说明。 一起来看看例子。
记住javabean的部署方法,它们必须是放在webapps/WEB-INF/classes/….
看我们的例子ebank和chattingroom就能明白java bean的用途
介绍其他的动作元素 <jsp:include> 把html或者jsp 页面包含进来,和<%@include …%> 有所不同的是: 这个是动态地包含,就是说是在执行该页面的时候把要调用的页面包含进来。所以被包含页面被改变,也是能反映出的。而<%@include …%>是静态地包含,就是说页面先被包含,再编译,最后执行。 <jsp:include>可以和<jsp:param …>合用,来带参数。
<jsp:include page=“url link…” flush=“true|false”/> 例子: <jsp:include page=“ch4/example.jsp”/> <jsp:include page=“abc/confirm.jsp”> <jsp:param name=“user” value=“aaa”/> <jsp:param name=“passwd” value=“234”/> </jsp:include>
<jsp:param name=“…” value=“…”/> 它和<jsp:include> <jsp:forward>一起使用,是定页面参数的,将被看成是新页面中的request对象的内容。
<jsp:forward>操作允许把当前的请求运行转发给另外一个文件,或者是html文件,或者是jsp文件,或者servlet. <jsp:forward page=“confirm.jsp”> <jsp:param name=“user” value=“aaa”/> <jsp:param name=“passwd” value=“234”/> </jsp:forward>
我们的实验课练习就是请大家利用已经学的知识,仿造我们的银行系统做商业小系统(卖商品)。