javabean 订阅
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。 展开全文
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
信息
外文名
Javabean
类    别
Java组件
中文名
Javabean
模    型
软件组件模型
JavaBean概述
JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、JSP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车,那么这些JavaBean就好比组成这辆汽车的不同零件。对软件开发人员来说,JavaBean带来的最大的优点是充分提高了代码的可重用性,并且对软件的可维护性和易维护性起到了积极作用。JavaBean的种类按照功能可以划分为可视化和不可视化两类。可视化的JavaBean就是拥有GUI图形用户界面的,对最终用户是可见的。不可视化的JavaBean不要求继承,它更多的被使用在JSP中,通常情况下用来封装业务逻辑、数据分页逻辑、数据库操作和事物逻辑等,这样可以实现业务逻辑和前台程序的分离,提高了代码的可读性和易维护性,使系统更健壮和灵活。随着JSP的发展,JavaBean更多的应用在非可视化领域,并且在服务器端应用方面表现出了越来越强的生命力。 [1] 
收起全文
精华内容
下载资源
问答
  • 虽然你可以在小型指令文件里放入一大块的程序代码,但是大多数的Java程序代码是属于可以重复使用的组件,称为JavaBeanJavaBean就跟ActiveX控件一样:它们提供已知的功能,并且是为了可随时重复使用的目的而设计的。...
  • 本文实例讲述了JSP+Servlet+JavaBean实现登录网页的方法。分享给大家供大家参考。具体如下: 这里涉及到四个文件: 1. 登录页面:login.html 2. 登录成功欢迎页面:login_success.jsp 3. 登录失败页面:login_failure....
  • JavaBean示例

    2018-11-23 11:15:53
    一个JavaBean的小示例,帮助熟悉学习Javabean的使用,实现了一个简单的交互。
  • 应用 JavaBean 方式实现用户的登录验证,当用户在表单中填写正确的用户名和密码后,提示成功登录。若输入的密码错误,则提示“密码错误,请输入正确密码!”。
  • 主要为大家详细介绍了Java组件javabean用户登录实例,内容有用户登录,注册和退出等,感兴趣的小伙伴们可以参考一下
  • 主要介绍了JavaBean四个作用域范围的详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
  • 定义一个JavaBeanJavaBean实际上就是一个简单的java类) javac -d ./ UserBean.java 生成包文件 package com.javaweb.ch07; //一个简单的JavaBean示例 public class UserBean{ //用户名属性 private String ...
  • xsd生成javaBean

    2018-12-13 16:37:22
    根据xsd文件一键生成javaBean,无需引用任何其他配置,所有依赖jar包已经完整提供
  • 本系统以MVC架构搭建,采用JSP+Servlet+Javabean+Mysql技术实现,软件界面美观友好,并且本资源包含有.sql脚本,可直接导入数据库生成系统所需要的表,无需做更改,即可使用。
  • JSP对于在Web 应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。 文件的上传功能在基于B/S的
  • 主要介绍了JSP教程之使用JavaBean完成业务逻辑的方法,较为详细的分析了JavaBean完成业务逻辑所涉及的相关概念及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • JavaBean

    千次阅读 2019-01-30 11:02:16
    文章目录JavaBean的概念JSP与JavaBean搭配使用的优点JavaBean的特征JSP访问JavaBean的语法导入JavaBean类声明JavaBean对象属性以及用法访问JavaBean属性< jsp:getProperty>< jsp:setProperty&...

    JavaBean的概念

    JavaBean是一种可重复使用、且跨平台的软件组件。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

    JSP与JavaBean搭配使用的优点

    1. 使得HTML与Java程序分离,这样便于维护代码。如果把所有的程序代码都写到JSP网页中,会使得代码繁杂,难以维护。
    2. 可以降低开发JSP网页人员对Java编程能力的要求。
    3. JSP侧重于生成动态网页,事务处理由JavaBean来完成,这样可以充分利用JavaBean组件的可重用性特点,提高开发网站的效率。

    JavaBean的特征

    一个标准的JavaBean有以下几个特性:
    – JavaBean是一个公共的(public)类
    – JavaBean有一个不带参数的构造方法
    – JavaBean通过setXXX方法设置属性,通过getXXX方法获取属性

    public class CounterBean{
    private int count=0;
    public CounterBean(){}
    public int getCount(){
    return count;
     }
    public void setCount(int count){
    this.count=count;
     }
    }
    

    JSP访问JavaBean的语法

    1. 导入JavaBean类
    2. 声明JavaBean对象
    3. 访问JavaBean属性

    导入JavaBean类

    通 过 <%@ page import> 指 令 导 入JavaBean类,例如:
    <%@ page import=“mypack.CounterBean” %>

    声明JavaBean对象

    < jsp:useBean>标签用来声明JavaBean
    对象,例如:
    < jsp:useBean id=“myBean” class=“mypack.CounterBean” scope=“session” />
    < jsp:useBean id=“myBean_1” class=“mypack.CounterBean” scope=“session” />

    属性以及用法

    id=“beanInstanceName”
    在所定义的范围中确认Bean的变量,使之能在后面的程序中使用此变量名来分辨不同的Bean ,这个变量名对大小写敏感,必须符合所使用的脚本语言的规定,这个规定在Java Language 规范已经写明。如果Bean已经在别的“< jsp:useBean>”标记中创建,则当使用这个已经创建过的Bean时,id的值必须与原来的那个id值一致;否则则意味着创建了同一个类的两个不同的对象。

    访问JavaBean属性

    JSP 提供了访问 JavaBean 属 性 的 标 签 , 如 果 要 将JavaBean 的 某 个 属 性 输 出 到 网 页 上 , 可以用
    < jsp:getProperty>标签,例如:

    < jsp:getProperty name=“myBean” property=“count” />

    如果要给 JavaBean 的 某 个 属 性 赋 值 , 可以用
    < jsp:setProperty>标签,例如:

    < jsp:setProperty name=“myBean” property=“count” value=“0” />

    < jsp:getProperty>

    JSP 语法格式如下:
    <jsp:getProperty name=“beanInstanceName” property=“propertyName” />
    属性:
    1.name="beanInstanceName"bean的名字,由jsp:useBean指定。
    2.property="propertyName"所指定的Bean的属性名。

    < jsp:setProperty>

    设置Bean的属性值.
    • JSP 语法格式如下:
    <jsp:setProperty name=“beanInstanceName”
    {
    property= “*” | property=“propertyName” [param=“parameterName” ] |property=“propertyName”
    value="{string | <%=expression %>}"
    }
    />
    可以在jsp:setProperty中通过param参数为bean的属性动态赋值

    <jsp:setProperty property="age" name="person" param="helloworld"/>
    

    对应的Servlet代码是:

    org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "age", request.getParameter("helloworld"), request, "helloworld", false);
    

    属性

    1.name=“beanInstanceName”
    – 表示已经在“jsp:useBean”中创建的Bean实例的名字。
    • 2.property="*"
    – 储存用户在jsp输入的所有值,用于匹配Bean中的属性。
    3.property=“propertyName” [ param=“parameterName” ]
    – 用一个参数值来指定Bean中的一个属性值,一般情况下是从request对象中获得的。其中property指定Bean的属性名,param指定request中的参数名。
    4.property=“propertyName” value="{string | <%= expression %>}"
    – 使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果是字符串,那么它就会被转换成Bean属性的类型。如果是一个表达式,那么它的类型就必须和将要设定的属性值的类型一致。
    不能在同一个“< jsp:setProperty>”中同时使用param和value参数 。

    JavaBean的范围

    scope属性决定了JavaBean对象存在的范围。scope的可选值包括:
    – page(默认值)
    – request
    – session
    – application

    JavaBean在page范围内

    客户每次请求访问JSP页面时,都会创建一个JavaBean对象。JavaBean对象的有效范围是客户请求访问的当前JSP网页。JavaBean对象在以下两种情况下都会结束
    生命期:
    – 客户请求访问的当前JSP网页通过标记将请求转发到另一个文件
    – 客户请求访问的当前JSP页面执行完毕并向客户端发回响应。

    JavaBean在request范围内

    客户每次请求访问JSP页面时,都会创建新的JavaBean对象。JavaBean对象的有效范围为:
    – 客户请求访问的当前JSP网页
    – 和当前JSP网页共享同一个客户请求的网页,即当前JSP网页中<%@ include>指令以及标记包含的其他JSP文件
    – 当所有共享同一个客户请求的JSP页面执行完毕并向客户端发回响应时,JavaBean对象结束生命周期。

    JavaBean对象作为属性保存在HttpRequest对象中,属性名为JavaBean的id,属性值为 JavaBean 对 象 , 因 此 也 可 以 通 过HttpRequest.getAttribute() 方法取得JavaBean对象,例如:
    CounterBean obj=(CounterBean)request.getAttribute(“myBean”);

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="learn.bean.Person"%>
    <!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>
    <jsp:useBean id="person" class="learn.bean.Person" scope="request"></jsp:useBean>
    
    <jsp:setProperty property="name" name="person" value="lisi"/>
    
    <jsp:getProperty property="name" name="person"/><br>
    <jsp:getProperty property="age" name="person"/><br>
    <jsp:getProperty property="address" name="person"/><br>
    
    <%out.println(person.getName() + "<br>");%>
    <%= person.getName() %>
    
    <jsp:setProperty property="age" name="person" param="helloworld"/>
    
    <jsp:getProperty property="age" name="person"/>
    
    <jsp:forward page="javabean2.jsp"></jsp:forward>
    
    <jsp:useBean id="person2" class="learn.bean.Person" ></jsp:useBean>
    
    
    </body>
    </html>
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="learn.bean.Person"%>
    <!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>
    <% Person p = (Person)request.getAttribute("person");
       out.println(p.getName());
    %>
    </body>
    </html>
    

    结果是:
    在这里插入图片描述

    JavaBean在session范围内

    JavaBean对象被创建后,它存在于整个Session的生存周期内,同一个Session中的JSP文件共享这个JavaBean对象。
    • JavaBean对象作为属性保存在HttpSession对象中,属性名为JavaBean的id,属性值为JavaBean对象。除了可以通过JavaBean的id直接引用 JavaBean 对象外,也可以通过HttpSession.getAttribute() 方法取得JavaBean对象,例如:
    CounterBean obj=(CounterBean)session.getAttribute(“myBean”);

    JavaBean在application范围内

    JavaBean对象被创建后,它存在于整个Web应用的生命周期内,Web应用中的所有JSP文件都能共享同一个JavaBean对象。
    • JavaBean对象作为属性保存在application对象中,属性名为JavaBean的 id,属性值为JavaBean对象,除了可以通过JavaBean的id直接引用 JavaBean 对象外,也可以通过application.getAttribute() 方 法 取 得JavaBean对象,例如:
    CounterBean obj = (CounterBean)application.getAttribute(“myBean”);

    问题:

    1. < jsp:useBean id=“myBean"class=“mypack.CounterBean” scope=“application” />如何输出myBean的count属性?
      选项(A)
    <jsp:getProperty name="myBean" property="count" />
    <jsp:useBean id="myBean" class="mypack.CounterBean" scope=“application" />
    

    选项(B)

    <% CounterBean counterBean = (CounterBean)application.getAttribute(“myBean”);%>
    <%=counterBean.getCount()%>
    

    选项©

    <% CounterBean counterBean=application.getAttribute(“myBean”);%>
    <%=counterBean.getCount()%>
    

    答案选择
    A、B
    ,因为C没有向下类型转换,getAttribute返回的是Object类型

    1. 为什么JavaBean必须遵守特定的规范,比如对于 CounterBean 的 count 属 性 , 必须提供getCount()和setCount()方法,而不能随心所欲的定义为getCOunt()、insertcount()等等其他名字?

    • 答案:当所有JavaBean遵守相同的规范,< jsp:getProperty>和< jsp:setProperty>标记就能自动根据JavaBean的属性来推断出它的get和set访问方法。(通过反射)

    练习

    package learn.bean;
    
    public class Student {
    
    	private long classNo;
    	private String name;
    	private int age;
    	private boolean sexy;
    	
    	public Student() { //构造函数
    		 classNo = 970431;
    		 name = "ZZZl";
    		 age = 34;
    		 sexy = true;
    	}
    	
    	public long getClassNo() {
    		return classNo;
    	}
    	public void setClassNo(long classNo) {
    		this.classNo = classNo;
    	}
    	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 boolean isSexy() {
    		return sexy;
    	}
    	public void setSexy(boolean sexy) {
    		this.sexy = sexy;
    	}
    }
    
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8" import="learn.bean.Student"%>
    <html>
    <body>
    	<%-- 引用自己编写的javaBean生成的bean组件 --%>
    	<jsp:useBean id="student" scope="session"
    		class="learn.bean.Student" />
    	<%=student.getName()%><br>
    	<%
    		student.setName("cong");
    	%>
    	<%-- 用getProperty动作来返回bean组件的属性值 --%>
    	<jsp:getProperty name="student" property="classNo" />
    	<br>
    	<jsp:getProperty name="student" property="name" />
    	<br>
    	<jsp:getProperty name="student" property="age" />
    	<br>
    	<jsp:getProperty name="student" property="sexy" />
    	<br>
    	<%-- 取属性值 --%>
    	<%=student.getClassNo()%>
    	<br>
    	<%=student.getName()%>
    	<br>
    	<%=student.getAge()%>
    	<br>
    	<%=student.isSexy()%>
    	<br>
    	<%--引用Java类库中生成的bean组件 --%>
    	<jsp:useBean id="date" scope="session" class="java.util.Date" />
    	<%=date%><br>
    </body>
    </html>
    

    当scope=page和scope=request时
    在这里插入图片描述
    刷新后网页不变
    但是当scope=session时第一次访问
    在这里插入图片描述
    刷新后 我们发信第一个名字变化了,因为刷新前后的session对象没变所以name属性也还是之前的cong
    在这里插入图片描述
    当我换个浏览器继续访问时结果又变了
    在这里插入图片描述
    再刷新又变了
    在这里插入图片描述
    对应的sevlet代码

    learn.bean.Student student = null;
          synchronized (session) {
            student = (learn.bean.Student) _jspx_page_context.getAttribute("student", javax.servlet.jsp.PageContext.SESSION_SCOPE);
            if (student == null){
              student = new learn.bean.Student();
              _jspx_page_context.setAttribute("student", student, javax.servlet.jsp.PageContext.SESSION_SCOPE);
            }
          }
    

    当scope=application时
    在这里插入图片描述
    我们刷新一下
    在这里插入图片描述
    我们换个浏览器再打开看
    在这里插入图片描述
    我们发现值还是cong,这是因为当服务器开启后,只有一个application对象,被所有用户共享。

    synchronized (application) {
            student = (learn.bean.Student) _jspx_page_context.getAttribute("student", javax.servlet.jsp.PageContext.APPLICATION_SCOPE);
            if (student == null){
              student = new learn.bean.Student();
              _jspx_page_context.setAttribute("student", student, javax.servlet.jsp.PageContext.APPLICATION_SCOPE);
            }
          }
    
    展开全文
  • javaBean事件监听

    2019-03-01 17:04:31
    javabean事件例子 博文链接:https://jy02149522.iteye.com/blog/264030
  • the tool help you to generate javabean(pojo) by json.it is so strong that you will like it.enjoy it now at ##功能介绍 我们开发的java系统,经常需要调用其他系统的API。这些API的返回格式,往往都是json...
  • 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>
    			&nbsp;&nbsp;&nbsp;&nbsp;<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>
    
    展开全文
  • 本系统以MVC架构搭建,采用JSP+Servlet+Javabean+Mysql技术实现,软件界面美观友好,并且本资源包含有.sql脚本,可直接导入数据库生成系统所需要的表,无需做更改,即可使用。
  • jsp与javabean

    2018-04-22 21:25:33
    简单的jsp与Javabean例子,介绍了设置属性和得到属性的方法,以及如何解决乱码
  • 主要介绍了使用jsp和javabean实现超简单网页计算器示例,需要的朋友可以参考下
  • 使用JSP、JavaBean和Servlet实现一个简单的留言板设计,包含用户管理和信息永久化保存。
  • JavaBean与表单

    2019-06-01 04:46:43
    NULL 博文链接:https://chaoyi.iteye.com/blog/2070972
  • book的Javabean类的实现

    2020-06-24 17:48:39
    实现Java类的创建,基于book的类,包括许多的信息 name id book_type author
  • 表结构生成javabean

    2018-01-19 02:02:06
    支持oracle 和 mysql 两种数据库,根据表结构生成javabean
  • 这是一套非常有用的网上购物系统(JavaBean+Servlet+jsp)项目,大家可自行下载开发,里面有毕业设计相关论文,以及完整代码,大家可以参考学习得到自己的认知体会,总结学习方法,完善自己的项目
  • 我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
  • 通过java解析上传文件,判断文件类型(excel或者csv),将解析后的数据映射到javabean,从而可以进一步操作,入库或者增添数据
  • 学生信息管理系统,通过javabean实现了增删改查,没有用到servlet。大家可以学习一下。
  • 我们也想过很多办法解决这个问题,包括用MyEclipse连接数据库生成JavaBean,但多多少少还是会有一些不尽人意的地方,包括表和表字段的comment总是无法生成,而且还会生成很多无用的注释代码,让代码看起来一点都不...
  • 主要介绍了javabean转成json字符并首字母大写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 196,830
精华内容 78,732
关键字:

javabean

java 订阅