在最原始JavaEE的MVC开发模式中,由“JSP+Servlet+JavaBean”技术所实现的MVC最为经典。本文主要粗略地讲解在JSP代码中操作JavaBean,尽管这种操作现在已经几乎不会使用,但了解它却有助于帮助我们构建JavaEE的知识体系,对后期学习框架也是有帮助的。
Table of Contents
MVC开发模式:
- Model:JavaBean实现。用于封装业务数据
- View:JSP实现。用于显示数据
- Controller:Servlet实现。用于控制model和view
啥是JavaBean
JavaBean其实也是一个Java类,只不过它是用于描述一个特殊的Java类,其必须满足三大规范:
- JavaBean类必须是
public
类; - 对于属性,必须
提供public的get和set方法;
- 必须拥有
不带参数的构造
方法;
JavaBean是一种开发规范,可以说是一种技术。
JavaBean的作用:
- 用于封装数据,保存数据,即实际项目中的实体类。
- 访问JavaBean只能使用getter和setter方法。
JavaBean的使用场景:
- 项目中用到实体对象(entity)符合JavaBean规范
- EL表达式访问对象属性。${student.name} 调用getName()方法,符合JavaBean规范。
- JSP标签中的属性赋值。 setNum(Integer num)。符合JavaBean规范。
- JSP页面中使用JavaBean。符合JavaBean规范
public class Student {
private String name;
private String sex;
private Integer age;
private String address;
public Student() {
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return this.sex;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return this.age;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return this.address;
}
}
在JSP中导入Bean
使用page指令:<%@page import=”JavaBean的完整路径” %>
在JSP中导入一个JavaBean
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="pojo.Student" %> 在JSP中导入一个JavaBean
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>KYLE</title>
</head>
<body>
<h1>Hello, Kyle.</h1>
</body>
</html>
在JSP中申明Bean对象
在JSP页面中申明JavaBean对象:
<jsp:useBean
id=”所要申明Bean对象的变量名”
scope=“此Bean对象存放在哪里?可选值有:page、request、session、application”
指定Bean类:class=“完整类名”、type=”用于指定其父类或接口类型”
>
</jsp:useBean>
指定Bean类:
- class:用于指定Bean类的完整类名;
- type:用于指定其父类或接口的类型;
- beanName=指定其父类或接口的类型;
注意:
- class或beanName不能同时存在;
- 若Bean对象已存在,class和beanName属性可以不指定,只需指定type属性;
- class可省去type独立使用,但beanName必须和type一起使用;
- class指定的类必须包含public、无参构造方法;
- type可以省去包名,通过<%@page import=”类完整名”%>指定所属包。
JavaBean的生命周期:
- 由标签<jsp:useBean>标签中的scope属性值所决定;
- page:使用该Bean对象,仅限于当前JSP页面;
- request:Bean对象的生命周期,仅从客户端请求开始到响应结束这段时间内;
- session:在Web项目的一个Session时间内有效;
- application:在整个服务器都有效!
实例:快速理解JSP中申明Bean对象
<!-- File Name: hello.jsp -->
<%@ page language="java" import="java.util.Enumeration" pageEncoding="UTF-8"%>
<%@ page import="bean.HelloBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBean</title>
</head>
<body>
<jsp:useBean
id="firstBean"
scope="page"
class="bean.HelloBean"
>
</jsp:useBean>
<!-- 相当于以下Java代码 -->
<%
HelloBean secondBean = new HelloBean();
%>
</body>
</html>
在JSP中访问Bean属性
在JSP中写入Bean的值:
<jsp:setProperty
name=”Bean的变量名”
property=“指定Bean中属性名”
value=”给该个属性名赋值的内容:一个串或者表达式,如<%=表达式 %>”
/>
在JSP中读取Bean的值:
<jsp:getProperty
name=”Bean的变量名”
property=”Bean中的属性名”
/>
快速理解获取标签的使用
<!-- File Name: hello.jsp -->
<%@ page language="java" import="java.util.Enumeration" pageEncoding="UTF-8"%>
<%@ page import="bean.HelloBean" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaBean</title>
</head>
<body>
<!-- 申明Bean对象 -->
<jsp:useBean
id="firstBean"
scope="page"
class="bean.HelloBean"
>
</jsp:useBean>
<!-- 设置Bean的属性值 -->
<jsp:setProperty name="firstBean" property="name" value="kyle"/>
<!-- 调用Bean的属性值 -->
<jsp:getProperty name="firstBean" property="name" />
</body>
</html>
执行结果: