您的位置:首页 > 编程语言 > Java开发

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

2015-10-09 14:57 399 查看
问题?什么是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>


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: