什么是JavaBean
JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类,使用JavaBean最大的优点在于提高代码的重用性,将复杂需求分解成简单的功能模块,这些模块是相对独立的,可以继承、重用:
1.一次性编写
2.任何地方执行
3.任何地方重用
值JavaBean示例
import java.io.*;
public class MyBean
{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String myname) {
name = myname;
}
public void setPassword(String password)
……
}
JavaBean规范
为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下:
(1)是一个公共类。
(2)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。
(3)提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。
(4)类可序列化(能够持久保存也能恢复状态),也就是说,它需要实现java.io.Serializable接口。
JSP对JavaBean的调用
1、使用JSP动作
2、通过脚本代码
jsp:useBean动作
<jsp:useBean id = "beanName"
scope = "page|session|application|request"
class = "BeanClass" />
id属性:表示实例化的对象名称
class属性:这个JavaBean所对应的包.类名。
scope属性:表示此对象保存的作用范围,默认为page
JavaBean的生命周期
jsp:setProperty动作
<jsp:setProperty name="beanName" last_syntax />
last_syntax语法格式如下:
1、property="*"
2、property="propertyName"
3、property="propertyName" param="parameterName"
4、property="propertyName" value="value"
<jsp:getProperty name = "BeanName" property = "Prop" />
name属性:指定JavaBean的名称。
property属性:指定从JavaBean中要检索的属性名称。
JavaBean的分类
值JavaBean
值JavaBean通常作为信息的容器,通常用来封装表单数据。
工具JavaBean
工具JavaBean通常用于封装业务逻辑、数据操作等,如连接数据库,对数据库进行增删改查和解决中文乱码等操作。使用工具JavaBean可以实现业务逻辑与前台程序的分离,提高了代码的可读性与易维护性。
使用演示:
1:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "cn.demo.one.javabean.Student" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Student stu = new Student();
stu.setName("张三");
stu.setAge(20);
%>
<h3>姓名:<%=stu.getName() %></h3>
<h3>年龄:<%=stu.getAge() %></h3>
</body>
</html>
注意:
<%@ page import = “cn.demo.one.javabean.Student” %>
导报的使用
cn.demo.one.javabean
Student.java:
package cn.demo.one.javabean;
import java.io.Serializable;
public class Student implements Serializable {
private String sid;//学号
private String name;
private int age;
public Student() {//无参数构造方法
super();
}
public Student(String sid, String name, int age) {
super();
this.sid = sid;
this.name = name;
this.age = age;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
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;
}
}
2:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="stu" class="cn.demo.one.javabean.Student" scope="request"></jsp:useBean> <!-- scope是Bean的范围,不加这个属性默认的就是当前页page -->
<%
//Student stu = new Student();
stu.setName("Lisa");
stu.setAge(20);
%>
<jsp:setProperty property="name" name="stu" value="李四"/> <!-- name属性值就是上面jsp:useBean id="stu"的ID属性值 -->
<jsp:setProperty property="age" name="stu" value="19"/>
<h3>姓名:<%=stu.getName() %></h3>
<h3>年龄:<%=stu.getAge() %></h3>
<jsp:forward page="a2_bean03.jsp"></jsp:forward>
</body>
</html>
a2_bean03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="stu" class="cn.demo.one.javabean.Student" scope="request"></jsp:useBean>
<h3>a2_bean03.jsp</h3>
<h3>姓名:<%=stu.getName() %></h3>
<h3>年龄:<%=stu.getAge() %></h3>
</body>
</html>
注意:两个文件中的
<jsp:useBean id=“stu” class=“cn.demo.one.javabean.Student” scope=“request”></jsp:useBean>
中的scope属性值要相同才可以
3:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="a2_bean05.jsp" method="post">
学生学号:<input type="text" name="sid" ><br>
学生姓名:<input type="text" name="name" ><br>
学生年龄:<input type="text" name="age" ><br>
<input type="submit" value="提交">
</form>
</body>
</html>
a2_bean05.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "cn.demo.one.javabean.Student" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
Student stu = new Student();
stu.setSid(request.getParameter("sid"));
stu.setName(request.getParameter("name"));
stu.setAge(Integer.parseInt(request.getParameter("age")));
%>
<h3>a2_bean05.jsp</h3>
<h3>学号:<%=stu.getSid() %></h3>
<h3>姓名:<%=stu.getName() %></h3>
<h3>年龄:<%=stu.getAge() %></h3>
</body>
</html>
对于a2_bean05.jsp文件,可以换一种形式,如下:
a2_bean05.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="stu" class="cn.demo.one.javabean.Student"></jsp:useBean>
<jsp:setProperty property="*" name="stu"/> <!-- 所有的属性自动赋值 -->
<h3>a2_bean06.jsp</h3>
<h3>学号:<%=stu.getSid() %></h3>
<h3>姓名:<%=stu.getName() %></h3>
<h3>年龄:<%=stu.getAge() %></h3>
</body>
</html>