JavaBean
JavaBean是一种可重复使用、且跨平台的软件组件。
JavaBean可分为两种:一种是有用户界面 (UI ,User Interface )的JavaBean ;还有一种是没有用户界面,主要负责处理事务 (如数据运算,操纵数据库)的JavaBean 。JSP通常访问的是后一 种JavaBean。 其本身是满足规范的一种java类。
优点
使得HTML与Java程序分离,这样便于维护代码 。如果把所有的程序代码都写到JSP 网页中,会使得代码繁杂,难以维护
可以降低开发JSP 网页人员对Java编程能力的要求
JSP侧重于生成动态网页,事务处理由JavaBean来完成,这样可以充分利用JavaBean组件的可重用性特点,提高开发网站的效率
MVC设计模式
使用JavaBean开发需要使用MVC(Model模型, View展示, Controller控制)模式。
用户看见视图(View),如表单,点击请求后,这个请求首先被控制器所接受(如:Servlet),servlet收到请求后,根据请求的内容来控制谁去处理这个请求,也就是模型(就是个各类),模型对请求处理完后,流程返回控制器,控制器决定返回的视图还是失败的视图。验证其实就是一个微型的MVC。
特性:
JavaBean是一个公共的 (public)类
JavaBean有一个不带参数的构造方法(可添加带参数的构造方法)
JavaBean 通过setXXX方法设置属性,通过getXXX方法获取属性。
public class CounterBean{
private int count=0;
public CounterBean(){}
public int getCount(){
return count;
}
public void setCount(int count){
this.count=count;
}
}
jsp使用
1、导入JavaBean类
通过 <%@ page import> 指令导入JavaBean类,例如:
<%@ page import="mypack.CounterBean" %>
2、声明JavaBean对象
<jsp:useBean>标签用来声明JavaBean对象,例如:
<jsp:useBean id="myBean" class="mypack.CounterBean" scope="session" />
id="beanInstanceName" 在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean ,这个变量名对大小写敏感,必须符合所使用的脚本语言的规定,这个规定在Java Language 规范已经写明。如果Bean 已经在别的 “<jsp:useBean>” 标记中创建,则当使用这个已经创建过的Bean时 ,id的值必须与原来的那个id值一致;否则则意味着创建了同一个类的两个不同的对象。
3 、访问JavaBean属性
JSP 提供了访问JavaBean 属性的标签,如果要将 JavaBean 的某个属性输出到网页上 ,可以用 <jsp:getProperty>标签,例如:
<jsp:getProperty name="myBean" property="count" />
如果要给 JavaBean 的某个属性赋值 ,可以用 <jsp:setProperty>标签,例如:
<jsp:setProperty name="myBean" property="count" value="0" />
4、代码示例
创建JavaBean类:
package com.study.bean;
public class Person {
private String name = "csdn";
private int age = 100;
private String adress = "hangzhou";
public Person(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
}
在jsp使用定义的JavaBean
<body>
<jsp:useBean id="person" class="com.study.bean.Person" scope="session">
</jsp:useBean>
<jsp:setProperty property="name" name="person" value="Neal"/>
<jsp:setProperty property="age" name="person" value="200"/>
<jsp:setProperty property="adress" name="person" value="zhejiang"/>
<jsp:getProperty property="name" name="person"/><br>
<jsp:getProperty property="age" name="person"/><br>
<jsp:getProperty property="adress" name="person"/><br>
</body>
在tomcat实现其实就是getAtttibute(“person”).getName();在jsp中使用jsp的代码其实是就是使用传统的java语句一样,只是表现形式一样罢了。其基础就是new Person().getName();在这里可以联想到为什么要规范set()与个体()了。
scope
scope属性决定了JavaBean 对象存在的范围 scope的可选值包括:
–page
– request
– session ()
– application ()
page:
客户每次请求访问JSP页面时,都会创建一 个JavaBean对象。JavaBean对象的有效 范围是客户请求访问的当前JSP 网页。JavaBean对象在以下两种情况下都会结束
生命期:
– 客户请求访问的当前JSP 网页通过<forward>
标记将请求转发到另一个文件
– 客户请求访问的当前JSP页面执行完毕并向客
户端发回响应。
request:
一个请求内,当所有请求的jsp页面执行完毕并返回响应后,javaBean消失.
JavaBean对象作为属性保存在HttpRequest对象中,属性名为JavaBean 的id ,属性值为JavaBean 对象 , 因此也可以通过HttpRequest.getAttribute()方 法 取 得JavaBean对象,例如:
Person obj=(Person)request.getAttribute(“myBean”);
session
JavaBean 对象被创建后,它存在于整个Session 的生存周期内,同一个Session 中的 JSP文件共享这个JavaBean对象。
JavaBean对象作为属性保存在HttpSession 对象中,属性名为JavaBean 的id,属性值为 JavaBean对象。除了可以通过JavaBean 的 id直接引用JavaBean 对象外,也可以通过 HttpSession.getAttribute() 方 法 取 得JavaBean对象,例如:
Person obj=(Person)session.getAttribute(“myBean”);
Application
JavaBean 对象被创建后,它存在于整个Web应用的生命周期内,Web应用中的所有JSP文件都能共享同一个JavaBean对象。
Person obj=(Person)application.getAttribute(“myBean”);