JavaBean的概念
JavaBean是一种可重复使用的、且跨平台的软件组件。
JavaBean可分为两种:一种是有用户界面的(有UI的);另一种是没有用户界面的(无UI的),无UI的JavaBean主要负责处理事务(如数据运算,操纵数据库)。
JSP通常访问的是后一种JavaBean。
JSP与JavaBean搭配使用的优点
使得HTML与Java程序分离,这样便于维护代码。
如果把所有的程序代码都写到JSP网页中,会使得代码繁杂,难以维护。
可以降低开发JSP网页人员对Java编程能力的要求。
JSP侧重于生成动态网页,事务处理由JavaBean来完成,这样可以充分利用JavaBean组件的可重用性特点,提高开发网站的效率。
MVC设计模式(Model View Controller)。
JavaBean的特征
一个标准的JavaBean有以下几个特征:
JavaBean是一个公共(public)的类。
JavaBean有一个不带参数的构造方法。
JavaBean通过setXXX方法设置属性,通过getXXX方法获取属性。
JSP访问JavaBean的语法
1.导入JavaBean类。
通过<%@ page import>指令导入JavaBean类,
例如:
<%@ page import="mypack.MyJavaBean" %>
2.声明JavaBean对象。
<jsp:useBean>标签用来声明JavaBean对象,
例如:
<jsp:useBean id="myBean" class="mypack.MyJavaBean" scope="session"/>
3.访问JavaBean属性。
JSP提供了访问JavaBean属性的标签,如果要将JavaBean的某个属性输出到网页上,可以用<jsp:getProperty>标签。
例如:
<jsp:getProperty name="myBean" property="count"/>
如果要给JavaBean的某个属性赋值,可以用<jsp:setProperty>标签,
例如:
<jsp:setProperty name="myBean" property="count" value="0"/>
使用指定的值来设置Bean的属性,这个值可以使字符串,也可以是表达式。
如果是字符串,那么它就会被转换成Bean属性的类型。
如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。
不能在同一个<jsp:setProperty>中使用value和param参数。
其中param是指通过请求参数的值来给属性赋值。
一个JavaBean使用的例子
写一个Person类(JavaBean):
package com.shengqishiwind.bean; public class Person { private String name = "zhangsan"; private int age = 24; private String address = "beijing"; 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 getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
然后在JSP中导入这个类,并且声明该类的对象,然后获取其属性或者更改属性:
导入:
<%@ page language="java" import="java.util.*,com.shengqishiwind.bean.Person" pageEncoding="UTF-8"%>
声明:
<!-- 声明JavaBean对象 --> <jsp:useBean id="person" class="com.shengqishiwind.bean.Person" scope="session"/>
获取对象属性:
<!-- 获取对象属性 --> name: <jsp:getProperty name="person" property="name" /><br> age: <jsp:getProperty name="person" property="age" /><br> address: <jsp:getProperty name="person" property="address" /><br>
设置对象属性:
<!-- 设置对象姓名属性 --> <jsp:setProperty name="person" property="name" value="lisi"/> <!-- 设置对象年龄属性 --> <jsp:setProperty name="person" property="age" value="30"/> <!-- 这里有自动的类型转换:String2int--> <jsp:setProperty name="person" property="age" value="<%=20+20 %>"/> <!-- value值还可以用表达式 --> <jsp:setProperty name="person" property="address" param="hello"/> <!-- 可以通过请求参数的值来赋值,如果不传递这个参数,则该属性仍是原值 -->
关于声明对象,也可以用脚本段来声明,其作用是一样的:
<!-- 脚本段声明对象 --> <br>another person: <% Person person2 = new Person();//这里不能把对象叫做person,提示重复的局部变量,进一步说明这种方法和上面的方法,本质上是一样的 out.println(person2.getName()); %>
所以输出属性时也可以直接用表达式:
<!-- 用表达式输出对象属性 --> <br>name again: <%= person.getName()%><br>