ch7.JavaBean

来源:互联网 发布:马步芳 知乎 编辑:程序博客网 时间:2024/06/05 03:38

JavaBean是特殊的Java类,使用J ava语言书写,并且遵守JavaBeans API规范。

接下来给出的是JavaBean与其它Java类相比而言独一无二的特征:

  • 提供一个默认的无参构造函数。
  • 需要被序列化并且实现了Serializable接口。
  • 可能有一系列可读写属性。
  • 可能有一系列的"getter"或"setter"方法。
在JSP中如果要应用JSP提供的JavaBean的标签来操作简单类的话,则此类必须满足如下开发要求:
  • 所有的类必须放在一个包中,在WEB中没有包的类似不存在的;
  • 所有类必须声明为public class,这样才能够被外部访问;
  • 类中的所有属性必须封装,即使用private声明
  • 封装的属性如果需要被外部所操作,则必须编写setter,getter方法;
  • 一个JavaBean中至少存在一个无参构造方法,此为JSP中标签所使用。

Web开发的标准结构



Web-info中的lib和classes文件相当于classpath,
classpath是执行时所需要的一个重要的环境属性,当Tomcat启动之后,web-inf/lib和web-info/classes都会自动配置到classpath之中

使用:
第一种,用import
第二种,用<jsp:useBean>

JavaBean与表单
用<jsp:setProperty>设置属性

用<jsp:getProperty>获得属性
<jsp:getProperty>只有一种操作方法
<jsp:getProperty name = "实例化对象的名称(id)" property = "属性名称"/>
注:反射机制是这些标签的操作基础

Javabean的保存范围
在<jsp:useBean>的指令上存在了一个scope属性, 表示的是一个JavaBean的保存范围,保存范围一共是四种:
  • page: 保存在一页的范围之中,跳转之后此JavaBean无效
  • request: 一个JavaBean对象可以保存在一次服务器跳转范围中
  • session:在一个用户的操作范围中保存,重新打开浏览器的时候才会声明新的JavaBean
  • application:在整个服务器上保存,服务器关闭是才会消失
JavaBean的删除
JavaBean虽然使用了<jsp:useBean>标签进行创建,但是其操作依靠的仍然是四种属性的范围,如果一个JavaBean不再使用的话,则可以直接使用四种属性中的removeAttribute()方法进行删除。

接下来给出一个JavaBean操作的实例,这个实例是书中注册验证的操作,暂时不使用数据库(来自Java web书中的程序,觉得挺有用的)



Register.java
package cn.thystar.gn.demo;import java.util.HashMap;import java.util.Map;public class Register{private String name;private String age;private String email;private Map<String, String> errors = null;public Register(){this.name = "";this.age = "";this.email = "";this.errors = new HashMap<String, String>();}//数据验证操作public boolean isValidate(){boolean flag = true;if(!this.name.matches("\\w{6,15}")){flag = false;this.name = "";errors.put("errname", "用户名是6~15位的字母或数字");}if(!this.age.matches("\\d+")){flag = false;this.age = "";errors.put("errage","年龄必须是数字");}if(!this.email.matches("\\w+@\\w+\\.\\w+\\.?\\w*")){flag = false;this.email = "";errors.put("erremail","输入Email地址不合法");}return flag;}//取出对应的错误信息public String getErrorMsg(String key){String value = this.errors.get(key);return value == null ?"":value;}public String getName(){return name;}public void setName(String name){this.name = name;}public String getAge(){return age;}public void setAge(String age){this.age = age;}public String getEmail(){return email;}public void setEmail(String email){this.email = email;}} 

index.jsp
<%@ page contentType = "text/html" pageEncoding = "GBK"%><html><head><title>www.thystar.com</title></head><% request.setCharacterEncoding("GBK"); %><jsp:useBean id="reg" scope="request" class="cn.thystar.gn.demo.Register"/><body><form action="check.jsp" method = "post">用户名:<input type = "text" name = "name" value = "<jsp:getProperty name="reg" property = "name"/>"><%=reg.getErrorMsg("errname")%><br>年  龄:<input type = "text" name = "age" value = "<jsp:getProperty name="reg" property="age"/>"><%=reg.getErrorMsg("errage")%><br>E-Mail:<input type = "text" name = "email" value = "<jsp:getProperty name = "reg" property="email"/>"><%=reg.getErrorMsg("erremail")%><br><input type = "submit" value = "提交"><input type = "reset" value = "重置"></form></body></html>

check.jsp
<%@ page contentType="text/html" pageEncoding = "GBK"%><html><head><title>www.thystar.com</title></head><%request.setCharacterEncoding("GBK");%><jsp:useBean id = "reg" scope="request" class="cn.thystar.gn.demo.Register"/><jsp:setProperty name = "reg" property = "*"/><body><%if(reg.isValidate()){%><jsp:forward page="success.jsp"/><%}else{%><jsp:forward page="index.jsp"/><%}%></body></html>

success.jsp
<%@ page contentType="text/html" pageEncoding="GBK"%><html><head><title>www.mldnjava.cn,MLDN高端Java培训</title></head><%request.setCharacterEncoding("GBK") ;%><jsp:useBean id="reg" scope="request" class="cn.thystar.gn.demo.Register"/><body>用户名:<jsp:getProperty name="reg" property="name"/><br>年  龄:<jsp:getProperty name="reg" property="age"/><br>E-MAIL:<jsp:getProperty name="reg" property="email"/><br></body></html>


《Java Web开发实战经典--基础篇》

0 0
原创粉丝点击