JavaBean
JSP开发初期HTML,css,java代码混杂在一起,给程序的调试和维护带来很大困难。将与HTML分离并将对象和逻辑java代码封装成类就是一个JavaBean组件。
1.JavaBean创建
首先Eclipse中创建一个Web项目,然后在src文件夹下创建一个包(一般命名为com.lyq.bean,也可以随意命名),这里来存放java文件(JavaBean本质上是一个java文件)。
接下来在WebContent / WEB-INF 目录下创建名为classes文件夹,并在其目录下创建和上面同名的包。

2.编写一个JavaBean
在src/com.ly.bean下创建一个java类,我们来完成对邮箱地址格式正确与否的判断。
保存后的java文件会自动编译形成一个.class字节码文件,为了让Tomcat找到这个文件,一般编译器会自动添加在WEB-INF/classes中(不会显示在资源管理器上),也可以手动将这个类文件复制过去。
JavaBean实质上是一个java类,它的特征是:
- 提供一个默认的无参构造函数。
- 需要被序列化并且实现了 Serializable 接口。
- 可能有一系列可读写属性。
- 所有的属性是私有,方法是公有的
- 可能有一系列的 getXXX()来获得内部属性或 setXXX()来设置内部属性方法。
package com.lyq.bean; import java.io.Serializable; public class Email implements Serializable{ private static final long serialVersionUID = 1L; private String mailAdd; private boolean email; public Email(){} public Email(String mailAdd) { this.mailAdd = mailAdd; } public boolean isEmail() { String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; if (mailAdd.matches(regex)) email = true; return email; } public String getMailAdd() { return mailAdd; } public void setMailAdd(String mailAdd) { this.mailAdd = mailAdd; } }
3.在jsp中使用JavaBean
创建register.jsp页面来写入邮箱,通过表单传递给result.jsp页面
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title heretitle> head> <body> <form action="result.jsp" method="post"> <input type="text" name="mailAdd"> <input type="submit"> form> body> html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.lyq.bean.*" %> DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title heretitle> head> <body> <div align="center"> <% String mailAdd = request.getParameter("mailAdd");
//实例化Email
Email email = new Email(mailAdd); if (email.isEmail()) out.print("That's right!"); else out.print("false"); %> <jsp:useBean id="mail" class="com.lyq.bean.Email"> <jsp:setProperty property="mailAdd" name="mail" /> 邮箱名为:<jsp:getProperty property="mailAdd" name="mail"/> jsp:useBean> <a href="register.jsp">返回a> div> body> html>
效果:
这里用了两种方式,第二种方式:
通过
语法:
<jsp:useBean id="给JavaBean起的名字" class="JavaBean类引入" scope="bean的作用域">jsp:useBean> 或者 <jsp:useBean id="给JavaBean起的名字" class="JavaBean类引入" scope="bean的作用域"/>
scope 的值可以是 page,request,session 或 application
<jsp:useBean id="id" class="bean 编译的类" scope="bean 作用域"> <jsp:setProperty name="bean 的 id" property="属性名" value="value"/>
通过value来给JavaBean中的属性赋值
<jsp:getProperty name="bean 的 id" property="属性名"/> ........... jsp:useBean>
另外,对于上面例子中的表单提交,表单信息中的属性名称最好是设置成JavaBean中的属性名称,这样就可以通过
<jsp:setProperty name="" property="*"/>
来接受所有的参数,可以减少重复工作。