
- 外文名
- Javabean
- 类 别
- Java组件
- 中文名
- Javabean
- 模 型
- 软件组件模型
-
JavaBean
2017-09-08 18:40:08JavaBean简介:
JavaBean就是符合某种特定规范Java类。
使用JavaBean可以解决代码的重复编写,减少代码冗余,功能区分明确,提高代码的维护性。
设计原则:
1)提供一个公有的无参构造函数。
2)需要被序列化并且实现了Serializable接口。
3)有一系列可读写属性。
4)getter和setter方法封装属性
eg:// User.java public class Users { private String username; private String password; public Users() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
在JSP中使用JavaBean有两种方法:
1.. 在src下按照规则新建一个JavaBean类,然后在WebRoot下对应的jsp文件中,在声明里新建一个JavaBean类,然后赋值、使用。<body> <h1>使用普通方式创建javabean的实例</h1> <hr> <% Users user = new Users(); user.setUsername("admin"); user.setPassword("123456"); %> 用户名:<%=user.getUsername() %><br> 密码:<%=user.getPassword() %><br> </body>
2.. 使用
<jsp:useBean>
动作标签,如下useBean动作与存取JavaBean有关的动作元素:
1. useBean 动作
<jsp:useBean>
标签可以在Jsp中声明一个JavaBean,然后使用。声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。
格式:<jsp:useBean id="标识符(类似于Java中的变量名)" class="java类名(需要将包名一同写入)" scope="作用范围(默认是page)">
其中,根据具体情况,scope的值可以是page,request,session或application。id值可任意只要不和同一JSP文件中其它<jsp:useBean>
中id值一样就行了。<body> <jsp:useBean id="myUsers" class="com.po.Users" scope="page" /> <h1>使用useBean动作方式创建javabean的实例</h1> <hr> 用户名:<%=myUsers.getUsername() %><br> 密码:<%=myUsers.getPassword() %><br> </body>
2. setProperty 动作
在<jsp:useBean>
标签主体中使用<jsp:setProperty/>
标签来调用 setter 方法3. getProperty 动作
在<jsp:useBean>
标签主体中使用<jsp:getProperty/>
标签来调用 getter 方法<body> <jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean> //1.根据表单匹配所有属性 <jsp:setProperty name="user" property="*" /> //2.根据表单匹配指定属性 <jsp:setProperty name="user" property="username" /> //3.手工赋值给属性,与表单无关 / <jsp:setProperty name="user" property="username" value="zhangsan"/> <jsp:setProperty name="user" property="password" value="123456"/> //4.通过url传参给属性赋值 <jsp:setProperty name="user" property="password" param="mypass"/> 用户名:<%=user.getUsername() %> <br> 密码:<%=user.getPassword() %> </body>
其中第四种方法,param为给password属性起的变量名,在url中要通过设置
action:xx.jsp?mypass=xxxx
给属性赋值JavaBean的四个作用域范围:
- page范围:与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时JavaBean被销毁。
- request范围:与JSP的request生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁。
- session范围:与JSP的session生命周期相对应,JavaBean的生命周期存在于session会话之中,当session超时或会话结束时JavaBean被销毁。
- application范围:与JSP的application生命周期相对应,在各个用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁。
这4种作用范围与JavaBean的生命周期息息相关,当JavaBean被创建后,通过
<jsp:setProperty>
标签与<jsp:getProperty>
标签调用时,将会按照page、request、session和application的顺序来查找这个JavaBean实例,直至找到一个实例对象为止,如果在这4个范围内都找不到JavaBean实例,则抛出异常。 -
Javabean
2017-11-01 22:55:17Javabean Javabean Javabean Javabean JavabeanJavabean
是用java语言描述的软件组件模型,使用Javabean可以实现代买的重复利用,因此极大地简化了程序设计过程,在jsp中Javabean分为两种:可视化的Javabean和非可视化的Javabean,非可视化Javabean指的是没有GUI界面的Javabean,使用非可视化的Javabean更好的实现了业务逻辑和表现层之间的分离,降低了他们之间的耦合度,在jsp中只使用非可视化的Javabean
Javabean是一种特殊的java类,public类,包含一个无参的构造方法,属性值的获取和设置
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
Param属性表面页面请求中的参数名称,value属性则表示赋值给bean属性property的具体值,在<jsp:setProperty>中不能同时使用param属性和value属性。
-
javaBean
2019-03-28 18:03:17起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。随着技术的不断发展与项目的...7.1 JavaBean介绍
7.1.1 javaBean 概述
起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一此业务逻辑或封装一些业务对象,由于这样的JavaBean并没有可视化的界面,所以又称之为非可视化的JavaBean。
可视化的JavaBean一般应用于Swing的程序中,在Java Web开发中并不会采用,而是使用非可视化的JavaBean,实现一此业务逻辑或封装一些业务对象,下面就通过实例来了解一下非可视化的JavaBean。7.1.2 JavaBean种类
【例7.1】:通过非可视化的javaBean对象,用于封装邮箱地址,通过jsp页面调用该对象来验证邮箱地址是否合法:
(1):创建名称为Email的javaBean对象,用于封装邮箱地址
package com.lyq.bean; import java.io.Serializable; /** * 邮件对象JavaBean * @author Li YongQiang */ public class Email implements Serializable { // serialVersionUID 值 private static final long serialVersionUID = 1L; // Email地址 private String mailAdd; // 是否是一个标准的Email地址 private boolean eamil; /** * 默认无参的构造方法 */ public Email() { } /** * 构造方法 * @param mailAdd Email地址 */ public Email(String mailAdd) { this.mailAdd = mailAdd; } /** * 是否是一个标准的Email地址 * @return 布尔值 */ public boolean isEamil() { // 正则表达式,定义邮箱格式 String regex = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; // matches()方法可判断字符串是否与正则表达式匹配 if (mailAdd.matches(regex)) { // eamil为真 eamil = true; } // 返回eamil return eamil; } public String getMailAdd() { return mailAdd; } public void setMailAdd(String mailAdd) { this.mailAdd = mailAdd; } }
说明:
虽然在javaBean的规范中,要求JavaBean对象提供默认无参的构造方法,但除默认无参的构造方法外外,JavaBean对象也可以根据相关属性提供构造方法,所以Email类为了实例化方便,还提供了使用mailAdd实现的一个构造方法。(2):创建index.jsp的页面,用于放置验证邮箱的表单,表单提交地址为result.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="result.jsp" method="post"> <table align="center" width="300" border="1" height="150"> <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" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page import="com.lyq.bean.Email"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <div align="center"> <% // 获取邮箱地址 String mailAdd = request.getParameter("mailAdd"); // 实例化Email,并对mailAdd赋值 Email email = new Email(mailAdd); // 判断是否是标准的邮箱地址 if(email.isEamil()){ 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()方法判断地址是够合法,并在页面中输出判断结果。
7.2 JavaBean的应用
7.2.1 获取JavaBean的属性信息
在javaBean对象中,为了防止外部直接对JavaBean属性的调用,通常将JavaBean中的属性设置为私有的(private),但需要为其提供公共的(public)访问方法,也就是getXXX()方法。
【例7.2】 在jsp页面中显示javaBean属性信息
(1)创建名称为Produce的类,该类是封装商品对象的javaBean,在Produce类中创建商品属性,并提供相应的getXXX()方法package com.lyq.bean; /** * 商品对象 * @author Li YongQiang */ public class Produce { // 商品名称 private String name = "电吉他"; // 商品价格 private double price = 1880.5; // 数量 private int count = 100; // 出厂地址 private String factoryAdd = "吉林省长春市xxx琴行"; public String getName() { return name; } public double getPrice() { return price; } public int getCount() { return count; } public String getFactoryAdd() { return factoryAdd; } }
(2)在JSP页面中获取商品JavaBean中的属性信息,该操作通过JSP动作标签进行获取。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <jsp:useBean id="produce" class="com.lyq.bean.Produce"></jsp:useBean> <div> <ul> <li> 商品名称:<jsp:getProperty property="name" name="produce"/> </li> <li> 价格:<jsp:getProperty property="price" name="produce"/> </li> <li> 数量:<jsp:getProperty property="count" name="produce"/> </li> <li> 厂址:<jsp:getProperty property="factoryAdd" name="produce"/> </li> </ul> </div> </body> </html>
说明:使用 jsp:useBean标签可以实例化JavaBean对象,jsp:getProperty标签可以获取JavaBean
中的属性信息,这两个标签可以直接操作我们所编写的类,它真的有那么强大,是不是在JSP 页面中
可以操作所有的Java类?答案是否定的。jsp:useBean标签与jsp:getProperty标签之所以可以操作
java类,是因为我们所编写的Java类遵循了JavaBean规范。jsp:useBean标签获取类的事例,其内部
是通过实例化类的默认构造方法进行获取,所有,JavaBean需要一个默认的无参的构造方法;
jsp:getProperty标签获取JavaBean中的属性,其内部是通过调用指定类型的getXXX方法进行获取,
所以,JavaBean规范要求为属性提供公共的(public)类型的访问器。
因此,在编写就JavaBean是要遵循制定的JavaBean规范。7.2.2 对JavaBean属性赋值
【例7.3】 创建商品对象的JavaBean,在该类中提供属性及其属性相对应的getXXX()方法与setXXX()方法,在JSP页面中对JavaBean属性赋值并获取输出。
(1)创建Produce类,该类是封装商品信息的JavaBean ,在该类中创建商品属性及其属性相对应的getXXX()和setXXX()方法。
package com.lyq.bean; /** * 商品对象 * @author Li YongQiang */ public class Produce { // 商品名称 private String name ; // 商品价格 private double price ; // 数量 private int count ; // 出厂地址 private String factoryAdd ; public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public String getFactoryAdd() { return factoryAdd; } public void setFactoryAdd(String factoryAdd) { this.factoryAdd = factoryAdd; } }
(2)创建页面,在该页面中实例化Produce对象,然后对其属性值进行赋值并输出
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <jsp:useBean id="produce" class="com.lyq.bean.Produce"></jsp:useBean> <jsp:setProperty property="name" name="produce" value="洗衣机"/> <jsp:setProperty property="price" name="produce" value="8888.88"/> <jsp:setProperty property="count" name="produce" value="88"/> <jsp:setProperty property="factoryAdd" name="produce" value="广东省xxx公司"/> <div> <ul> <li> 商品名称:<jsp:getProperty property="name" name="produce"/> </li> <li> 价格:<jsp:getProperty property="price" name="produce"/> </li> <li> 数量:<jsp:getProperty property="count" name="produce"/> </li> <li> 厂址:<jsp:getProperty property="factoryAdd" name="produce"/> </li> </ul> </div> </body> </html>
7.2.3 在JSP页面中应用JavaBean
将JavaBean对象应用到JSP页面中,JavaBean的生命周期可以自行进行设置,它存在于4种范围之内,分别为:page、request、session、application,默认的情况下,JavaBean作用于page范围之内。
【例7.4】 实现档案管理系统,在其中录入用户信息功能,主要通过在JSP 页面中应用JavaBean进行实现。
(1) 创建名称为Person的类,实现对用户信息的封装。package com.lyq.bean; /** * 用户信息 * @author Li YongQiang */ public class Person { // 姓名 private String name; // 年龄 private int age; // 性别 private String sex; // 住址 private String add; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAdd() { return add; } public void setAdd(String add) { this.add = add; } }
(2)创建程序的主页面index.jsp,在该页面中放置录入用户信息所需要的表单
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="reg.jsp" method="post"> <table align="center" width="400" height="200" border="1"> <tr> <td align="center" colspan="2" height="40"> <b>添加用户信息</b> </td> </tr> <tr> <td align="right">姓 名:</td> <td> <input type="text" name="name"> </td> </tr> <tr> <td align="right">年 龄:</td> <td> <input type="text" name="age"> </td> </tr> <tr> <td align="right">性 别:</td> <td> <input type="text" name="sex"> </td> </tr> <tr> <td align="right">住 址:</td> <td> <input type="text" name="add"> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="添 加"> </td> </tr> </table> </form> </body> </html>
技巧
表单信息中的属性名称最好设置为JavaBean的属性名称,这样就可以通过“<jsp:setProperty="*/>”的形式来接收所有参数,这种方式可以减少程序中得代码量。如将用户年龄文本框的name属性设置为age,它对应Person类中的age。(3)创建名称为reg.jsp的JSP页面,用于对index.jsp页面中的表单的提交请求进行处理。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <%request.setCharacterEncoding("UTF-8");%> <jsp:useBean id="person" class="com.lyq.bean.Person" scope="page"> <jsp:setProperty name="person" property="*"/> </jsp:useBean> <table align="center" width="400"> <tr> <td align="right">姓 名:</td> <td> <jsp:getProperty property="name" name="person"/> </td> </tr> <tr> <td align="right">年 龄:</td> <td> <jsp:getProperty property="age" name="person"/> </td> </tr> <tr> <td align="right">性 别:</td> <td> <jsp:getProperty property="sex" name="person"/> </td> </tr> <tr> <td align="right">住 址:</td> <td> <jsp:getProperty property="add" name="person"/> </td> </tr> </table> </body> </html>
reg.jsp页面中的<jsp:userBean>标签实例化了JavaBean,然后通过“<jsp:setProperty name=“person” property="*"/>”对Person类中的所有属性进行赋值,使用这种方式要求表单中的属性名称与JavaBean中的属性名称一致。
说明
表单中的属性名称与JavaBean中的属性名称不一致,可以通过<jsp:setProperty >标签中的param属性来指定表单中的属性。如表单中的用户名为username,可以使用“< jsp:setProperty name=“person” property=“name” param=“username”/>对其赋值”7.3 在JSP中应用JavaBean
在JSP页面之中,处理中文字符经常会出现字符乱码的现象,特别是在一些表单传递中文数据时候容易产生,它的解决办法有很多,如将request的字符集指定为中文字符集、编写JavaBean对乱码字符进行转码等,下面就通过实例,编写JavaBean对象来解决中文乱码现象问题。
**【例7.5】**通过编写对字符转码的JavaBean,来解决在新闻发布系统的,发布中文信息的乱码现象(1)实现对新闻实体对象的封装
package com.lyq.bean; /** * 新闻对象 * @author Li YongQiang */ public class News { // 标题 private String title; // 内容 private String content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
(2)创建对字符编码进行处理的JavaBean,在该类中对字符编码进行转换。
package com.lyq.bean; import java.io.UnsupportedEncodingException; public class CharactorEncoding { /** * 构造方法 */ public CharactorEncoding(){ } /** * 对字符进行转码处理 * @param str 要转码的字符串 * @return 编码后的字符串 */ public String toString(String str){ // 转换字符 String text = ""; // 判断要转码的字符串是否有效 if(str != null && !"".equals(str)){ try { // 将字符串进行编码处理 text = new String(str.getBytes("iso8859-1"),"GB18030"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } // 返回后的字符串 return text; } }
CharactorEncoding 类通过toString()方法对字符串参数进行编码,实例中将其编码设置为ut-8,因为在JSP页面的编码也是UTF-8.这里统一
String类的getByste()方法的作用,是按给定的字符编码将此字符串编码到byte序列,并将结果存储到新的byte数组;而String类的构造方法String(byte[]) bytes[], Charset charset)是通过使用指定的字符编码解析指定的byte数组,构造一个新的字符串。
(3)创建index.jsp页面,用于放置发布新闻信息的表单。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>XX新闻发布系统</title> </head> <body> <form action="release.jsp" method="post"> <table align="center" width="450" height="260" border="1"> <tr> <td align="center" colspan="2" height="40" > <b>新闻发布</b> </td> </tr> <tr> <td align="right">标 题:</td> <td> <input type="text" name="title" size="30"> </td> </tr> <tr> <td align="right">内 容:</td> <td> <textarea name="content" rows="8" cols="40"></textarea> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="发 布"> </td> </tr> </table> </form> </body> </html>
(4)创建名称为release.jsp的页面,用于对发布新闻信息的表单请求进行处理。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>发布结果</title> <style type="text/css"> #container{ width: 450px; border: solid 1px; padding: 20px; } #title{ font-size: 16px; font-weight: bold; color: #3399FF; } #content{ font-size: 12px; text-align: left; } </style> </head> <body> <jsp:useBean id="news" class="com.lyq.bean.News"></jsp:useBean> <jsp:useBean id="encoding" class="com.lyq.bean.CharactorEncoding"></jsp:useBean> <jsp:setProperty property="*" name="news"/> <div align="center"> <div id="container"> <div id="title"> <%= encoding.toString(news.getTitle())%> </div> <hr> <div id="content"> <%= encoding.toString(news.getContent())%> </div> </div> </div> </body> </html>
在release.jsp页面中使用< jsp:useBean>标签分别实例化了News对象与CharactorEncoding对象,然后通过< jsp:setProperty>标签对News对象中的属性进行赋值,在赋值之后,使用CharactorEncoding对象的toString()方法对News对象中的属性进行转码处理。
注意:
通过< jsp:useBean> 标签实例化的JavaBean对象,如果在JSP页面中使用java代码调用JavaBean对象中的属性或方法,所使用的JavaBean对象的变量名称为< jsp:useBean>标签中的id属性7.3.2 在JSP页面中用来显示时间的JavaBean
【例7.6】 创建获取当前时间的JavaBean对象,该对象既可以获取当前的日期和时间,同时也可以获取今天是星期几。实现简单的电子时钟。
(1) 对时间,星期进行封装package com.lyq.bean; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 获取当前时间的JavaBean * @author Li YongQiang * */ public class DateBean { // 日期及时间 private String dateTime; // 星期 private String week; // Calendar对象 private Calendar calendar = Calendar.getInstance(); /** * 获取当前日期及时间 * @return 日期及时间的字符串 */ public String getDateTime() { // 获取当前时间 Date currDate = Calendar.getInstance().getTime(); // 实例化SimpleDateFormat SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒"); // 格式化日期时间 dateTime = sdf.format(currDate); // 返回日期及时间的字符串 return dateTime; } /** * 获取星期几 * @return 返回星期字符串 */ public String getWeek() { // 定义数组 String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // 获取一星期的某天 int index = calendar.get(Calendar.DAY_OF_WEEK); // 获取星期几 week = weeks[index - 1]; // 返回星期字符串 return week; } }
DataBean类主要封装了日期时间(dateTime属性)和星期(week属性),并针对这两个属性提供了相应的getXXX()方法。其中,getDateTime()方法用于获取当前的日期和时间,该方法通过SimpleDateFormat对象的format()方法fanhu9i对当前时间的格式化,并返回格式化后的字符串。getWeek()方法用于获取星期几,该方法主要通过Calendar对象获取一星期的某天索引,及创建字符串数组来实现。
(2)创建名称为index.jsp的页面,它是程序中的主页。在index.jsp页面中实例化DateBean对象,并获取当前日期时间及星期实现电子时钟效果。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>电子时钟</title> <style type="text/css"> #clock{ width:420px; height:80px; background:#E0E0E0; font-size: 25px; font-weight: bold; border: solid 5px orange; padding: 20px; } #week{ padding-top:15px; color: #0080FF; } </style> <meta http-equiv="Refresh" content="1"> //每隔1秒自动刷新页面一次 </head> <body> <jsp:useBean id="date" class="com.lyq.bean.DateBean" scope="application"></jsp:useBean> <div align="center"> <div id="clock"> <div id="time"> <jsp:getProperty property="dateTime" name="date"/> </div> <div id="week"> <jsp:getProperty property="week" name="date"/> </div> </div> </div> </body> </html>
在index.jsp页面中,通过< jsp:useBean> 标签对DateBean对象实例化,将JavaBean对象DateBean的作用域设置为application,然后通过< jsp:getProperty>标签分别获取DateBean对象的日期时间及星期属性值。
技巧
因为获取当前时间的JavaBean对象DateBean并不涉及更多的业务逻辑,所以实例中将它的作用域设置为application。好处是,在JSP页面中第一次调用该对象时会实例化一个DateBean对象,以后再次调用时不需要再次实例化DateBean,因为它在application范围内已经存在。7.3.3 数组转换成字符串
【例7.7】 实现对“问卷调查”表单中复选框的数值的处理。
(1)创建名称为Paper的类,对调查问卷进行封装。package com.lyq.bean; import java.io.Serializable; /** * 调查问卷 * @author Li YongQiang */ public class Paper implements Serializable { private static final long serialVersionUID = 1L; // 编程语言 private String[] languages; // 掌握技术 private String[] technics; // 部分 private String[] parts; public Paper(){ } public String[] getLanguages() { return languages; } public void setLanguages(String[] languages) { this.languages = languages; } public String[] getTechnics() { return technics; } public void setTechnics(String[] technics) { this.technics = technics; } public String[] getParts() { return parts; } public void setParts(String[] parts) { this.parts = parts; } }
paper类包含3个属性对象,他们均为字符串数组对象,属性值可以包含多个字符串对象。其中,language属性代表“编程语言”集合,technics属性代表“掌握技术”集合,parts属性代表“困难部分”集合。
(2)创建将数组转换成字符串的JavaBean对象,它的名称为Convert。在该类中编写arr2Str()方法,将数组对象转换成指定的字符串。
package com.lyq.bean; /** * 转换数组的JavaBean * @author Li YongQiang */ public class Convert { /** * 将数组转换成为字符串 * @param arr 数组 * @return 字符串 */ public String arr2Str(String[] arr){ // 实例化StringBuffer StringBuffer sb = new StringBuffer(); // 判断arr是否为有效数组 if(arr != null && arr.length > 0){ // 遍历数组 for (String s : arr) { // 将字符串追加到StringBuffer中 sb.append(s); // 将字符串追加到StringBuffer中 sb.append(","); } // 判断字符串长度是否有效 if(sb.length() > 0){ // 截取字符 sb = sb.deleteCharAt(sb.length() - 1); } } // 返回字符串 return sb.toString(); } }
技巧
在组合字符串过程中,arr2Str()方法使用的是StringBuffer对象,并没有使用String对象,这是因为String是不可变长的对象,在每一次修改之后字符串长度都会创建一个新的String对象;而StringBuffer则是可变的字符序列,类似于String的字符串缓冲区。所以,在字符串经常修改的地方使用StringBuffer,其效率高于String。(3)创建程序中的首页index.jsp,在该页面中放置调查问卷所使用的表单。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>调查问卷</title> </head> <body> <form action="reg.jsp" method="post"> <div> <h1>调查问卷</h1> <hr/> <ul> <li>你经常用哪些编程语言开发程序:</li> <li> <input type="checkbox" name="languages" value="JAVA">JAVA <input type="checkbox" name="languages" value="PHP">PHP <input type="checkbox" name="languages" value=".NET">.NET <input type="checkbox" name="languages" value="VC++">VC++ </li> </ul> <ul> <li>你目前所掌握的技术:</li> <li> <input type="checkbox" name="technics" value="HTML">HTML <input type="checkbox" name="technics" value="JAVA BEAN">JAVA BEAN <input type="checkbox" name="technics" value="JSP">JSP <input type="checkbox" name="technics" value="SERVLET">SERVLET </li> </ul> <ul> <li>在学习中哪一部分感觉有困难:</li> <li> <input type="checkbox" name="parts" value="JSP">JSP <input type="checkbox" name="parts" value="STRUTS">STRUTS </li> </ul> <input type="submit" value="提 交"> </div> </form> </body> </html>
在index.jsp页面中,包含了大朗的复选框按钮CheckBox,提交表单之后name属性相同的checkbox对象的值,将会被转换成一个数组对象。
(4)创建名称为reg.jsp的页面,用于对index.jsp页面表单提交请求进行处理,将用户所提交的调查问卷结果输出到页面中。<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>调查结果</title> </head> <body> <jsp:useBean id="paper" class="com.lyq.bean.Paper"></jsp:useBean> <jsp:useBean id="convert" class="com.lyq.bean.Convert"></jsp:useBean> <jsp:setProperty property="*" name="paper"/> <div> <h1>调查结果</h1> <hr/> <ul> <li> 你经常使用的编程语言:<%= convert.arr2Str(paper.getLanguages()) %> 。 </li> <li> 你目前所掌握的技术:<%= convert.arr2Str(paper.getTechnics()) %> 。 </li> <li> 在学习中感觉有困难的部分:<%= convert.arr2Str(paper.getParts()) %> 。 </li> </ul> </div> </body> </html>
在reg.jsp页面中共实例化了两个JavaBean对象,均通过< jsp:useBean>标签进行实例化。其中,属性为paper的对象为事例中封装的调查问卷对象,在index.jsp页面中表单提交后,reg.jsp 页面中的< jsp:setProperty>标签将对paper对象中的属性赋值。id属性值为convert的对象,是将数组转换成字符串的javaBean 对象,用于将paper对象中的属性值转换成字符串对象,该操作通过调用arr2Str()方法进行实现。
练习
1.编写一个封装学生信息的JavaBean对象,在index.jsp页面中调用该对象,并输出学生信息
package com.lyq.bean; /** * 学生信息JavaBean * @author Li YongQiang */ public class Student { // 学号 private int id; // 姓名 private String name; // 性别 private String sex; // 年龄 private int age; // 班级 private String classes; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClasses() { return classes; } public void setClasses(String classes) { this.classes = classes; } }
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>学生信息</title> <style type="text/css"> li.{font-size: 12px;} </style> </head> <body> <jsp:useBean id="student" class="com.lyq.bean.Student"> <jsp:setProperty property="id" name="student" value="1"/> <jsp:setProperty property="name" name="student" value="李*强"/> <jsp:setProperty property="sex" name="student" value="男"/> <jsp:setProperty property="age" name="student" value="18"/> <jsp:setProperty property="classes" name="student" value="三年一班"/> </jsp:useBean> <h2>学生信息</h2> <ul> <li> 学号:<%=student.getId() %> </li> <li> 姓名:<%=student.getName() %> </li> <li> 性别:<%=student.getSex() %> </li> <li> 年龄:<%=student.getAge() %> </li> <li> 班级:<%=student.getClasses() %> </li> </ul> </body> </html>
2。编写一个封装用户信息的JavaBean对象,通过操作JavaBean的动作标识,输出用户的注册信息
package com.lyq.bean; /** * 用户JavaBean * @author Li YongQiang */ public class User { // 用户名 private String name; // 密码 private String password; // qq号码 private String qq; // E-Mail地址 private String mail; // 性别 private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>用户注册</title> </head> <body> <form action="reg.jsp" method="post"> <table align="center" width="450"> <tr> <td align="center" colspan="2"> <h2>用户注册</h2> <hr> </td> </tr> <tr> <td align="right">用户名:</td> <td><input type="text" name="name" /></td> </tr> <tr> <td align="right">密码:</td> <td><input type="password" name="password" /></td> </tr> <tr> <td align="right">性别:</td> <td> <input type="radio" name="sex" value="男" checked="checked">男 <input type="radio" name="sex" value="女">女 </td> </tr> <tr> <td align="right">QQ号码:</td> <td><input type="text" name="qq" /></td> </tr> <tr> <td align="right">E-Mail地址:</td> <td><input type="text" name="mail" /></td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="注 册"> </td> </tr> </table> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>注册信息</title> </head> <body> <%request.setCharacterEncoding("GB18030"); %> <jsp:useBean id="user" class="com.lyq.bean.User"> <jsp:setProperty property="*" name="user"/> </jsp:useBean> <table align="center" width="400"> <tr> <td align="right">姓 名:</td> <td> <jsp:getProperty property="name" name="user"/> </td> </tr> <tr> <td align="right">密 码:</td> <td> <jsp:getProperty property="password" name="user"/> </td> </tr> <tr> <td align="right">性 别:</td> <td> <jsp:getProperty property="sex" name="user"/> </td> </tr> <tr> <td align="right">QQ号码:</td> <td> <jsp:getProperty property="qq" name="user"/> </td> </tr> <tr> <td align="right">E-Mail地址:</td> <td> <jsp:getProperty property="mail" name="user"/> </td> </tr> </table> </body> </html>
3.编写一个页面访问计数器的JavaBean,在index.jsp页面中通过jsp动作标签实例化该对象,并将其放置于application范围中,实现访问计数器
package com.lyq.bean; /** * 计数器 * @author hhaha */ public class Counter { // 次数 private static int count = 0; // 获取计数器值 public int getCount(){ return ++count; } }
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>计数器</title> </head> <body> <jsp:useBean id="counter" class="com.lyq.bean.Counter"></jsp:useBean> <h2> 欢迎光临,你是第 <jsp:getProperty property="count" name="counter"/> 位来访者。 </h2> </body> </html>
-
javabean
2020-07-08 09:27:32javabean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露...JavaBean
javabean简介
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
功能
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。
JavaBean是可复用的平台独立的软件组件,开发者可以在软件构造器工具中对其直接进行可视化操作。组成
- 属性
JavaBean提供了高层次的属性概念,属性在JavaBean中不只是传统的面向对象的概念里的属性,它同时还得到了属性读取和属性写入的API的 支持。属性值可以通过调用适当的bean方法进行。比如,可能bean有一个名字属性,这个属性的值可能需要调用String getName()方法读取,而写入属性值可能要需要调用void setName(String str)的方法。
每个JavaBean属性通常都应该遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值,对bean进行操作。JavaBean还可以对属性值的改变作出及时的反应。比如一个显示当前时间的JavaBean,如果改变时钟的时区属性,则时钟会立即重画,显示当前指定时区的时间。
- 方法
JavaBean中的方法就是通常的Java方法,它可以从其他组件或在脚本环境中调用。默认情况下,所有bean的公有方法都可以被外部调用,但bean一般只会引出其公有方法的一个子集。
由于JavaBean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段(没有public字段)。这样,方法调用是接触Bean的唯一途径。
但是和普通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操作和使用Bean的主要途径。公开Bean方法在Bean操作中降为辅助地位,因为两个高级Bean特性–属性和事件是与Bean交互作用的更好方式。- 事件
Bean与其他软件组件交流信息的主要方式是发送和接受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引脚:工程师将引脚连接在一起组成系统,让组件进行通讯。有些引脚用于输入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。
事件为JavaBean组件提供了一种发送通知给其他组件的方法。在AWT事件模型中,一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。 -
JAVAbean
2019-09-25 00:51:16JAVAbean 学号:201631062509 姓名:杨菓 1.什么是JAVAbean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式...
-
分数)集结号如何下分.docx
-
彻底学会正则表达式
-
4. AWS Container Day - 深入理解Amazon EKS.pdf
-
【数据分析-随到随学】Mysql数据库
-
Tableau雷达图、凹凸图
-
Machine_Learning周志华《机器学习》阅读笔记
-
【数据分析-随到随学】SPSS调查问卷统计分析
-
OPPO A83(MT6763)原厂原理图维修图(PDF格式)
-
48、链队列_LinkQueue
-
Win 10 Docker安装和简单使用
-
牛客IOI周赛21-普及组B题题解
-
MFC开发简单聊天程序
-
(转)用户调研必修:如何建立用户体验地图
-
Amazon_EKS_Security_Best_Practice.pdf
-
转行做IT-第2章 HTML入门及高级应用
-
基础的深度学习实验研究结果汇总笔记
-
(新)备战2021软考信息安全工程师通关套餐
-
WeChat.CRM.SDK,微信开发sdk
-
C语言结课设计:餐饮管理与点餐系统
-
git stash pop 和 git stash apply 的区别