在JSP网页开发的初级阶段,并没有所谓的框架与逻辑分层的概念,JSP网页代码是与业务逻辑代码写在一起的。这种凌乱的代码书写方式,给程序的调试及维护带来了很大的困难,直至JavaBean的出现,才得到了改善。
一、JavaBean概述
在JSP网页开发的初级阶段,并没有框架与逻辑分层概念的产生,需要将Java代码嵌入到网页中,对JSP页面中的一些业务逻辑进行处理,如字符串处理、数据库操作等。其开发流程如下图所示。
这种开发方式看上去流程简单,但是当大量的Java代码嵌入到JSP页面中,必定会给修改和维护带来一定的困难,因为JSP页面包含HTML代码、CSS代码、Java代码等,同时再加入业务逻辑处理代码,既不利于页面变成人员的设计,也不利于Java程序员对程序的开发。而且将Java代码写入到JSP页面中,不能体现面向对象的开发模式,达不到代码的复用。
如果使HTML代码与Java代码分离,将Java代码单独封装成为一个处理某种业务逻辑的类,然后在JSP页面中调用此类,则可以降低HTML代码与Java代码之间的耦合度,简化JSP页面,提高Java程序代码的复用性和灵活性。这种与HTML代码相分离,而使用Java代码封装的类,就是一个JavaBean组件。在JavaWeb开发中,可以使用JavaBean组件来完成业务逻辑的处理。应用JavaBean与JSP整合的开发模式如下图所示。
从图中可以看出,JavaBean的应用简化了JSP页面,在JSP页面中只包含了HTML代码、CSS代码,但JSP页面可以引用JavaBean组件来完成某一业务逻辑,如字符串处理、数据库操作等。
二、JavaBean种类
起初,JavaBean的目的是为了将可以重复使用的代码进行打包。在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean统称为可视化的JavaBean。
随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一些业务逻辑与封装一些业务对象,由于这样的JavaBean并没有可视化的界面,所以又称为非可视化的JavaBean。
可视化的JavaBean一般应用于Swing的程序中,在JavaWeb开发中并不会采用,而是使用非可视化的JavaBean,实现一些业务逻辑或封装一些业务对象。
下面通过实例来了解一下非可视化的JavaBean。
通过非可视化的JavaBean,封装邮箱地址对象,通过JSP页面调用该对象来验证邮箱地址是否合法。
1、 创建名称为Email的JavaBean对象,用于封装邮箱地址。
package com.javaBean.email;
import java.io.Serializable;
public class Email implements Serializable {
/**
* serialVersionUid值
*/
private static final long serialVersionUID = 1L;
//Email 地址
private String mailAdd;
//是否是一个标准的Email地址
private boolean email;
/**
* 默认无参的构造方法
*/
public Email(){
};
/**
* 构造方法
* @param mailAdd Email 地址
*/
public Email(String mailAdd){
this.mailAdd=mailAdd;
}
/**
* 是否是一个标准的Email地址
* @return 布尔值
*/
public boolean isEmail(){
//正则表达式,定义邮箱格式
String str="\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
//matches()方法可判断字符串是否与正则表达式匹配
if(mailAdd.matches(str)){
//email 为真
email=true;
}
//返回 email
return email;
}
public String getMailAdd() {
return mailAdd;
}
public void setMailAdd(String mailAdd) {
this.mailAdd = mailAdd;
};
}
2、 创建名称为index.jsp页面,它是程序中的首页,用于放置验证邮箱的表单,该表单的提交地址为result.jsp。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>邮箱认证系统</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="result.jsp" method="post">
<table align="center" width="300px" border="1px" height="150px">
<tr>
<td colspan="2" align="center">
<b>邮箱认证系统</b>
</td>
</tr>
<tr>
<td align="right">邮箱地址:</td>
<td><input type="text" name="mailAdd"/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit"/>
</td>
</tr>
</table>
</form>
</body>
</html>
3、 创建名称为result.jsp页面,对index.jsp页面中的表单进行处理,在此页面中实例化Email对象,对邮箱地址进行验证,并将验证结果输出到页面中。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>验证结果</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<div align="center">
<%@page import="com.javaBean.email.*" %>
<%
//获取邮箱地址
String mailAdd=request.getParameter("mailAdd");
//实例化 Email,并对 mailAdd 赋值
Email email=new Email(mailAdd);
//判断是否是标准的邮箱地址
if(email.isEmail()){
out.print(mailAdd+"<br />是一个标准的邮箱地址!<br />");
}else{
out.print(mailAdd+"<br />不是一个标准的邮箱地址!<br />");
}
%>
<a href="index.jsp">返回</a>
</div>
</body>
</html>
该页面通过JSP内置对象request,接收表单传递的mailAdd值,然后通过该值来实例化Email对象,通过Email的isEmail方法判断邮箱地址是否合法,并在页面中判断输出结果。效果图:
认证首页---
认证失败---
认证成功---