是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用 Javabean减少重复代码,使整个JSP代码的开发更简洁。JSP搭配JavaBean来使用,有以下的优点
可将HTML和Java代码分离,这主要是为了日后维护的方便。如果把所有的程序代码(HTML和Java)写到JSP页面中,会使整个程序代码又多又复杂,造成日后维护上的困难。可利用 JavaBean的优点。将常用到的程序写成 Java Bean组件,当在JSP要使用时,只要调用 Java Bean组件来执行用户所要的功能,不用再重复写相同的程序,这样一来也可以节省开发所需的时间。JavaBean本身就是一个类,属于Java的面向对象编程。
• 在JSP中如果要应用JSP提供的Javabean的标签来操作简单类的话,则此类必须满足如下的开发要求: • 所有的类必须放在一个包中,在WEB中没有包的类是不存在的; • 所有的类必须声明为public class,这样才能够被外部所访问; • 类中所有的属性都必须封装,即:使用private声明; • 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法; • 一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用
除了使用import的语句之外,也可以使用JSP中提供的:<jsp:useBean>指令 完成操作,指令的操作语法如下所示: • <jsp:useBean id=“实例化对象名称” scope=“保存范围” class=“包.类名称”/> • 主要属性: • id:表示实例化对象的名称 • scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、 application • class:对象所对应的包.类名称
<%@ page contentType="text/html" pageEncoding="GBK"%> <jsp:useBean id="simple" scope="page" class="com.org.simpleBean"/> <html> <head><title>JAVABEAN测试</title></head> <body> <% simple.setName("小明"); simple.setAge(30); %> <h3>姓名:<%=simple.getName()%></h3> <h3>年龄:<%=simple.getAge()%></h3> </body> </html>在JavaBean语法中实际上最大的特点就在于与表单的交互上,如果按照之前的做法,有一个表单提交了内容 给JSP,JSP中如果要是想进行接收的话,则需要通过request,分别进行接收,并设置到JavaBean对应的属性里。但是通过以下标签来简化获取: • JSP中专门提供了JavaBean的属性设置标签:<jsp:setProperty> • JSP中专门提供了JavaBean的属性取得标签:<jsp:getProperty> • 设置和取得属性的标签依靠的是反射机制运行
1、当Bean中的属性名跟参数名不一致时
<jsp:setProperty name="simple" property="name" param="userName"/> 等价于 String username=request.getParameter("userName"); simple.setName(username);2.当Bean中的属性名跟参数名一致时
<jsp:setProperty name="simple" property="name"/> 等价于 String username=request.getParameter("name"); simple.setName(username);3.给JavaBean的属性传具体的值
<jsp:setProperty name="simple" property="name" values="jack"/> 等价于 simple.setName("jack");4.当参数名和Bean的属性名一一对应时的快捷设置方式
<jsp:setProperty name="simple" property="*"/> <jsp:getProperty name="simple" property="name"/>在<jsp:useBean>的指令上存在了一个scope属性,表示的是一个 JavaBean的保存范围,保存的范围一共是四种: • page:保存在一页的范围之中,跳转之后此JavaBean无效 • request:一个JavaBean对象可以保存在一次服务器跳转范围中 • session:在一个用户的操作范围中保存,重新打开浏览器的时候才会声 明新的JavaBean • application:在整个服务器上保存,服务器关闭时才会消失。
首先编写一个Count.java类,来分别测试四种属性范围。 Count.java :用户计数操作的JavaBean
package com.org; public class Count { private int count = 0 ; public Count(){ System.out.println("=========== 一个新的Count对象产生 ===========") ; } public int getCount(){ return ++ this.count ; } }1.page范围的JavaBean page范围的JavaBean只在本页有效,跳转后无效。
page_bean01.jsp: 定义page范围的JavaBean
<%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head><title>page范围的JavaBean</title></head> <jsp:useBean id="cou" scope="page" class="cn.mldn.lxh.demo.Count"/> <body> <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3> <jsp:forward page="page_bean02.jsp"/> </body> </html>page_bean02.jsp:跳转后的页面
<%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head><title>page范围的JavaBean</title></head> <jsp:useBean id="cou" scope="page" class="cn.mldn.lxh.demo.Count"/> <body> <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3> </body> </html>2.request范围的JavaBean
request范围设置的JavaBean,则在一次服务器跳转中,将不会重复声明JavaBean对象。
request_bean01.jsp:设置request范围的JavaBean并跳转
<%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head><title>request范围的JavaBean</title></head> <jsp:useBean id="cou" scope="request" class="com.org.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>request范围的JavaBean</title></head> <jsp:useBean id="cou" scope="request" class="com.org.Count"/> <body> <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3> </body> </html>3.session范围的JavaBean
当一个用户连接到JSP页面后,此session范围的JavaBean将会一直保留,直到会话结束。
session_bean.jsp:设置session范围的JavaBean
<%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head><title>session范围的JavaBean</title></head> <jsp:useBean id="cou" scope="session" class="com.org.Count"/> <body> <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3> </body> </html>4. applica范围的JavaBean
application范围的JavaBean是所有用户所共享的,只要声明后就会在服务器端保存,所有用户都可以直接访问此对象。
application_bean.jsp:定义application范围的JavaBean
<%@ page contentType="text/html" pageEncoding="GBK"%> <html> <head><title>application范围的JavaBean</title></head> <jsp:useBean id="cou" scope="application" class="com.org.Count"/> <body> <h3>第<jsp:getProperty name="cou" property="count"/>次访问!</h3> </body> </html>