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类的例子
生成getter和setter方法是有快捷键的,包括带参数的构造方法,快捷键是shift+alt+s找到以下图片处
![](http://img.blog.csdn.net/20151009161056831)
***三、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类使用
结果:
一、定义及原理: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>
结果:
相关文章推荐
- eclipse运行时编码设置
- Java设计模式之装饰者模式
- java基础之instanceof的用法
- Java学习
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Java学习总结--列表排序
- Access restriction在myeclipse中遇到的访问限制的问题
- 没看懂
- SpringMVC @Autowired
- 如何通过java反编译工具嵌入myeclipse来跟进查看源码
- Spring MVC Controller单例陷阱
- SpringMVC之控制器的单例和多例管理
- Spring MVC 后端获取前端提交的json格式字符串并直接转换成control方法对应的参数对象
- java拆箱装箱中的一个问题
- java版txt文件下载解决
- java反射详解
- SpringMVC的工作原理
- Java防止SQL注入的几个途径
- JAVA中ResourceBundle和Properties类的区别
- Eclipse或MyEclipse的git插件egit