JavaBean介绍
在JSP网页开发的初级阶段,并没有框架与逻辑的分层的概念的产生,需要将Java代码嵌入网页中,对JSP页面中的一些业务逻辑进行处理,如字符串处理、数据库操作等。这种开发方式虽然看似流程简单,但如果大量的Java代码嵌入JSP页面中,必定会给修改以及维护带来一定的困难,因为在JSP页面中包含HTML代码、CSS代码、Java代码等,同时再加入业务逻辑处理代码,既不利于页面的编程人员的设计,也不利于Java程序员对程序的开发,而且将Java代码写入JSP页面中,不能体现面向对象的开发模式,达不到代码重用的效果。直至JavaBean的出现,这一问题才得到了改善。
如果使HTML代码和Java代码相分离,将Java代码单独封装成为一个处理某种业务逻辑的类,然后在JSP页面中调试此类,则可以降低HTML代码与Java代码之间的耦合度,简化JSP页面,提高Java程序代码的重用性以及灵活性。这种与HTML代码相分离,而使用Java代码封装的类,就是一个JavaBean组件。在Java Web开发中,可以使用JavaBean组件来完成业务逻辑的处理。
JavaBean开发规范
JavaBean本身就是一个类,属于Java的面向对象编程
所有的类必须放在一个包中,在WEB中没有包的是不存在的
所有的类必须声明为public class,这样才能够被外部所访问
类中所有的属性都必须封装,即使用private声明来声明属性
封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法
一个JavaBean中必须要提供无参构造方法
举例如下:验证邮箱合法性
首先建立EmailDemo类:
EmailDemo.java代码如下:
package com.wu.javaBeanDemo;
/**
* @date 2020-11-29 12:01:20
* @author 一夜星尘
* @version 1.8.0
*/
public class EmailDemo {
private String email;
private boolean isEmail;
public EmailDemo(){
}
public EmailDemo(String email) {
this.email = email;
String regex = "[0-9a-zA-Z]\\w+@\\w+\\.(com|net|cn.com)"; // 邮件格式
if(email.matches(regex)) {
this.isEmail = true;
}else {
this.isEmail = false;
}
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return this.email;
}
public boolean isEmail() {
return this.isEmail;
}
}
在WebContent文件目录下创建index.jsp和indentify.jsp文件:
代码如下:
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html ; charset=utf-8" />
<title>邮箱认证</title>
</head>
<body>
<form action="identify.jsp" method="post" name="Email">
<table border="1" >
<tr>
<td colspan="2" align="center">邮箱认证系统</td>
</tr>
<tr>
<td>邮箱地址:</td>
<td><input type="text" name="emailAddr" /></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" value ="提交" /></td></tr>
</table>
</form>
</body>
</html>
<%@page import="com.wu.javaBeanDemo.EmailDemo"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" http-equiv="Content-Type"/>
<title>邮件认证页面</title>
</head>
<body>
<%-- 以下为使用javaBean实例 --%>
<jsp:useBean id="emailBean" class="com.wu.javaBeanDemo.EmailDemo" ></jsp:useBean>
<%
String emailAddr = request.getParameter("emailAddr");
com.wu.javaBeanDemo.EmailDemo tempEmail = new EmailDemo(emailAddr);
if(tempEmail.isEmail()){
out.print("<div align=\"center\"><b>合法邮箱</b></div><br>");
out.print("<hr><div align=\"center\">" + emailAddr + " </div>");
}else{
out.print("<hr> <div align=\"center\"><b>非法邮箱</b></div>");
}
%>
<br>
<br>
<div align="center"><a href="index.jsp" >返回上一页</a></div>
</body>
</html>
效果如下:
JavaBean应用
编写JavaBean对象要遵循JavaBean规范,在JavaBean规范中的访问器setXXX()方法,用于对JavaBean中的属性赋值,如果对JavaBean对象的属性提供getXXX()方法,在JSP页面中就可以通过<jsp:setProperty> 对其进行赋值。
举例如下:学生信息录入
建立Student类:
package com.wu.javaBeanDemo;
public class Student {
private String name;
private long number;
private int age;
private String sex;
private String weChat;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the number
*/
public long getNumber() {
return number;
}
/**
* @param number the number to set
*/
public void setNumber(long number) {
this.number = number;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @return the sex
*/
public String getSex() {
return sex;
}
/**
* @param sex the sex to set
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* @return the weChat
*/
public String getWeChat() {
return weChat;
}
/**
* @param weChat the weChat to set
*/
public void setWeChat(String weChat) {
this.weChat = weChat;
}
}
再建立index.jsp文件和input.jsp文件:
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html ; charset=utf-8" />
<title>学生信息录入</title>
</head>
<body>
<form action="input.jsp" method="post" name="input">
<table border="1" >
<tr>
<td colspan = "2"><div align = "center"><b>学生信息</b></div></td>
</tr>
<tr>
<td>学生姓名:</td>
<%-- 这里的name要和Student属性的name保持一致 --%>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>学生学号:</td>
<td><input type="text" name="number"></td>
</tr>
<tr>
<td>学生年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td>学生性别:</td>
<td><input type="text" name ="sex"></td>
</tr>
<tr>
<td>学生微信:</td>
<td><input type="text" name = "weChat"></td>
</tr>
<tr >
<td colspan = "2">
<div align = "center"><input type = "submit" value = "录入"></div>
<div align = "center" ><input type = "reset" value = "重置"></div>
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.wu.javaBeanDemo.Student" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>学生信息显示页面</title>
</head>
<body>
<%-- 以下解决中文乱码问题 --%>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="student" class = "com.wu.javaBeanDemo.Student" >
<%-- 以下语句对所有Student实例变量赋值 --%>
<jsp:setProperty name = "student" property = "*" />
</jsp:useBean>
<div>
<ul>
<li>
学生姓名:<jsp:getProperty name = "student" property = "name" />
</li>
<li>
学生学号:<jsp:getProperty name = "student" property = "number" />
</li>
<li>
学生年龄:<jsp:getProperty name = "student" property = "age" />
</li>
<li>
学生性别:<jsp:getProperty name = "student" property = "sex" />
</li>
<li>
学生微信:<jsp:getProperty name = "student" property = "weChat" />
</li>
</ul>
</div>
</body>
</html>
效果如下: