JSP与JavaBean
1. JavaBean组件技术
1.1JavaBean组件的定义
- 组件是自包含的、可重用的软件单元,提供已知的功能,可与任何应用程序集成,便于随时重复使用,而且实现了跨体系结构和跨平台。
- JavaBean技术就是Java中的组件技术,它是封装了属性和方法的类。
- JavaBean类似于一个黑匣子,只知道这个组件的功能和如何使用它,但不知道其内部如何实现。
1.2JavaBean组件的分类
从功能上,JavaBean组件可分为:
- 可视化Bean:具有可视化表示,它接收用户的输入或点击并响应用户事件,如按钮、文本条等。
- 非可视化Bean:完成特定功能的功能性组件,不能可视化,如定时器控件、拼写检查器、实现数据库连接的Bean等
1.3JavaBean规范
JavaBean的书写规范主要包括:
- JavaBean是一个public的类。
- 类要实现Serializable接口。
- 要有一个默认构造函数,以便任何一个容器都可以创建JavaBean的实例。
- 存放属性的变量为protected或private特性
- 设置和获取属性时,使**用setXXX()和getXXX()**方法。
1.3.1setXXX()和getXXX() 遵循的规范
- 必须为public特性的方法。
- 一般同一个属性的get方法和set方法成对使用,也可以单独使用。
- get方法的名字必须是getXXX(),set方法的名字必须为setXXX(),其中XXX是第一个字母转换为大写的属性名。
- get和set方法书写形式必须符合下面规定:
public <属性类型> get<属性名>()
get方法的返回类型必须与属性的数据类型一致且不能带参数。
public void set <属性名>(< 属性类型> 参数名)
set方法返回类型必须为void,且只能带一个和属性类型相同的参数。
1.4JavaBean的简单属性
- 一般的,Bean有四种类型的属性:
简单属性:是指对象内的private或protected成员变量,只能有一个单独的值,而不能有一组值。
索引属性:表示一个数组值
绑定属性(关联属性):该种属性的值发生变化时,要通知其它的对象
受限属性 - 只要符合上述Bean规范,开发工具就能够通过方法名称进行自检。
2. Bean的存放目录
在Web应用中,为了能找到JavaBean:
- 不仅Bean的书写形式要符合JavaBean的书写规范。
- Bean的存放位置也要符合J2EE的规范。
- 总的来说,Bean都要放在相应Web应用的classes目录下。
2.1只供某个Web应用使用的Bean的存放位置
- Bean的字节码文件需要存放在Tomcat安装目录的
“…/webapps/Web应用目录/WEB-INF/classes” - 需要注意的是,如果以后Bean的源文件发生变化,classes目录下的Bean类文件并不能被更新,所以访问的可能不是最新的Bean。
2.2对任何web应用都可以使用的Bean的存放位置
- Bean的字节码文件需要存放在Tomcat安装目录的classes目录下。
- 需要注意的是,如果以后Bean的源文件发生变化,classes目录下的Bean类文件并不能被更新,所以访问的可能不是最新的Bean。
2.3只对ROOT目录可用的Bean的存放位置
- Bean的字节码文件需要存放在Tomcat安装目录的
…/webapps/ROOT/WEB-INF/classes
3. 在JSP中使用JavaBean
JSP规范对Bean提供的支持:
- <jsp:useBean>:声明、创建JavaBean实例和初始化Bean
- <jsp:setProperty>:设置bean属性值
- <jsp:getProperty>:检索bean属件值
3.1useBean动作标记
- 语法形式为:
<jsp:useBean id="beanInstanceName" scope="page|request|session|application"
class="packageName.className"
type="packageName.className"
beanName="packageName.className|<%= expression %>" >
标记体
</jsp:useBean>
- 可以为空标记形式
3.1.1useBean语法说明
- id属性:指定Bean实例的标识符
后面的程序中使用此变量名来分辨不同的Bean
必须符合Java命名规则对标识符的规定 - class属性:指出所使用的JavaBean的(类)文件路径和文件名(不带文件后缀)
- type属性:指定Bean要强制类型转换的类型
- beanName属性:指定串行化Bean的名字
- scope属性:指定Bean存在的范围:
page
request
session
application
3.1.2scope属性说明
- page:在包含<jsp:useBean>元素的jsp页面以及此文件中的所有静态包含文件中有效
- request:在当前jsp页面和通过<jsp:forword>或<jsp:include>转向或包含的任意其他资源中有效
- session:在任何使用相同session对象的jsp文件中有效
- application:在任何使用相同application对象的jsp文件中有效
3.2getProperty动作标记
- getProperty动作标记获得指定Bean属性的值,将其转换成字符串后输出到客户端
- 语法形式为:
<jsp:getProperty name=“bean name” property=“property name”>
</jsp:getProperty>
- 可以为空标记形式
3.3setProperty动作标记
-
<jsp:setProperty>动作标记可以修改Bean的属性值。
-
语法形式一:
<jsp:setProperty name=“beanName” property=“属性名” value=“str |<%=表达式%>” />
name属性:使用的Bean的id
property属性:Bean要修改的属性名
value属性:指定要设置的值 -
语法形式二:
<jsp:setproperty name=“bean名字” property=“*”>
property属性表示被设置值的bean属性的名字。JSP引擎会扫描请求参数,找到和Bean属性名字匹配的请求参数,调用相应属性的set方法。
4. JSP Model 1
- JSP Model 1是以页面为中心的体系结构,用户通过浏览器访问一系列JSP页面。
- JSP页面不仅提供显示输出,而且负责处理请求,并给客户端响应。
- 使用Java Bean执行数据存取和业务逻辑,使表示与内容分离。
4.1JSP Model 1的优缺点
- 优点:降低了页面与模型间的依赖性,实现了显示与内容分离,使页面制作和业务逻辑并行执行。
- 缺点:JSP既要作为视图负责提供表示层数据,又要充当控制器负责业务流程控制,因此仍然有大量的代码段嵌入JSP 页面中。