JavaBean的定义和原理及bean的动作元素

本文介绍了JavaBean的概念,它是一种可重用的Java组件,主要用于封装数据和处理。JavaBean需要有默认构造器,私有属性和公共的getter/setter方法。在JSP中,可以通过jsp:useBean、jsp:setProperty和jsp:getProperty等动作元素来操作JavaBean。文章详细讲解了这些动作元素的用途和属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题?什么是javabean?原理是什么?用来干什么?

一、定义及原理:JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。其实最重要的一个是它的本质是一二封装类,用来封装数据和中转数据的(个人理解)。


二、用法:

1、特殊写法
a、必须有默认的构造方法
b、所有字段定位私有的   
c、提供公有的getter或setter方法,属性
d、一般实现java.io.Serializable

2、一定要符合Java的命名规范

3.bean类的例子

package com.dp.javaweb.domain;

import java.io.Serializable;

public class bean implements Serializable{
	//80%的类都实现这个接口,虽然并不是都用,但是养成良好的习惯是好的
	private String username;
	private String password;
	private boolean marry;
	public bean() {//这个无参数构造方法,在使用jsp动作元素的时候就有用了。详情看以下的javabean的动作元素篇
		// TODO Auto-generated constructor stub
	}
	public bean(String username, String password, boolean marry) {
		super();
		this.username = username;
		this.password = password;
		this.marry = marry;
	}//

	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;
	}
	public boolean isMarry() {//is和get是一样的
		return marry;
	}
	public void setMarry(boolean marry) {
		this.marry = marry;
	}

}

生成getter和setter方法是有快捷键的,包括带参数的构造方法,快捷键是shift+alt+s找到以下图片处

                               

***三、JSP中操作JavaBean的动作元素
1.jsp:useBean


作用:用于在指定域范围内查找指定名称的JavaBean对象,找到了就直接使用;没有找到,创建一个,并放到指定的域范围内。

属性:
id:必须的。JavaBean的名称
class:JavaBean的完整类名
scope:域范围。默认是page范围。可选值:page request session application

注意:如果该标签有主体内容,只在创建新对象时才会执行。


2.jsp:setProperty(必须先使用useBean)


作用:调用JavaBean的setter方法。还能自动类型转换,仅限基本类型
属性:
property:必须的。属性名称。比如setName,名称是username。
可以使用通配符*。使用前提是请求参数的名称与属性的名称完全一致。
name:必须的。哪个对象的?即jsp:useBean中的id的取值。
value:属性的取值。支持直接量;支持表达式(<%=表达式%>)。
param:请求参数名(这个的使用看以下例子)


3.jsp:getProperty(必须先使用useBean)
作用:调用JavaBean的getter方法。
property:必须的。属性的名称。比如getName,名称是username。
name:必须的。哪个对象的?即jsp:useBean中的id的取值。

动作元素使用例子:1.jsp结合上面的javabean类使用

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <jsp:useBean id="p"  class="com.dp.javaweb.domain.bean"  scope="page">aa</jsp:useBean>
    
    <!-- aa值在查找到对象就不输出,否则就是创建对象时才输出 -->
    
    <%=p.getUsername()%><!-- 这样就利用了产生的对象操作bean中的属性及方法了 -->
    <!-- 那大家想一想,上面这个动作标签做了那些事呢?接下来我们用java代码说明: -->
    
    <%--
    com.dp.javaweb.domain.bean p=null;
    synchronized{//查找指定范围及名称的JavaBean对像
    	p=(com.dp.javaweb.domain.bean)pageContext.getAttribute("p",PageContext.PAGE_SCOPE);
    	if(p==null){
    		p=new com.dp.javaweb.domain.bean();
    		//如果没有找到p属性,在这里就新建对象,但是没有无参数构造方法就不行
    		pageContext.setAttribute("p", p);//建一个名叫牌的对象放到bean类中
    	}
    }
    找到就继续操作嘛
    --%>
    <% String s="123456" ;%>
    <jsp:setProperty property="password" name="p" value="<%=s %>"/>
    <%=p.getPassword() %>
   
    
     <br/>---------------- 利用请求参数名设置JavaBean的各种属性 ---------------------<br/>
     <!-- http://localhost:8080/day10/1.jsp?name=abc&gender=female --><!-- 访问方式 -->
     
     <jsp:setProperty property="username" name="p" param="username"/>
     <jsp:setProperty property="password" name="p" param="password"/>
      <%=p.getUsername() %><br/>
    <%=p.getPassword()%><br/>
    
    <hr/>
    <!--http://localhost:8080/day10/1.jsp?username=abc&password=female 请求参数的名和属性的名称一样,就可以使用通配符*  -->
    <!-- 访问方式 -->
  <jsp:setProperty property="*" name="p"/>
    <jsp:getProperty property="username" name="p"/>
    <jsp:getProperty property="password" name="p"/>
    <jsp:getProperty property="marry" name="p"/>
    
  </body>
</html>

结果:




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值