javaBean的相关知识和应用
javaBean
JavaBean 简介
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。在JSP的开发中可以使用javaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用,有以下优点:
1.可将HTML和java代码分离,好维护
2.将常用的程序携程javaBean组件,当在JSP要使用时,只要调用就可以,避免编写重复代码
JavaBean开发要求
1.javaBean本身就是一个类,属于java面向对象的编程
2.在JSP中如果要应用jsp提供的javabean的标签来啊哦做简单类的话,则此类必须满足如下的开发要求:
01.所有的类必须放在一个包中,在web中没有包的是不存在的
02.所有的类必须声明为public class,这样才能够被外部所方位
03.类中所有的属性都必须使用private封装
04.封装的属性如果需要被外部所操作,则必须编写对应的setter.getter方法
05.一个javabean中至少存在一个无参构造方法,此为jsp中的标签所使用
实例:
package cn.bdqn.javaBean;
public class Person {
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
对于javabean有几个名词:
VO: 值对象,存放所有所有的传递数据的操作上;
POJO: 简单java对象
PO: persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。
注意:当一个javabean修改后,一定要重启服务器
当然Tomcat中提供了自动的加载机制,但是这种加载机制需要通过配置server.xml进行配置
在配置的虚拟目录的,context节点中添加属性reloadable=”true”
这样配置后,Tomcat会自动进行检测,如果javabean修改,会自动进行重新加载
由于reloadable一致要处于监视状态,所以服务器真正用于项目运行的时候,此属性一定要设置成false,否则性能会下载.
每当进行完重新加载之后,之前所设置的全部的session范围的属性将彻底消失
JavaBean与表单
Jsp表单页面代码如下:
<form action="control.jsp" method="post">
<table>
<tr>
<td>姓名</td>
<td><input name="name" placeholder="请输入姓名">
</td>
</tr>
<tr>
<td>年龄</td>
<td><input type="password" name="age" placeholder="请输入年龄">
</td>
</tr>
<tr>
<td colspan="2"><input type='submit' value="提交"></td>
</tr>
</table>
</form>
方法一:
使用<%@ page import=”包.类名称”%>进行引入,就可以使用new关键字,进行对象的创建了
实例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="cn.bdqn.javaBean.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>
<%request.setCharacterEncoding("UTF-8"); %>
<%
Person p=new Person();
p.setName(request.getParameter("name"));
p.setAge(Integer.parseInt(request.getParameter("age")));
%>
<%=p.getName() %>
<%=p.getAge()%>
</body>
</html>
方法二:
使用<jsp:useBean id=”实例化对象的名称” scope=”保存范围(四大作用域)” class=”包.类名称”/>
Id是被实例化的对象的名称,这样使用就直接拿这个对象进行使用.
<jsp:useBean id="P2" scope="page" class="cn.bdqn.javaBean.Person"/>
<%--jsp:useBean标签中的id是被实例化的对象,
jsp:setProperty标签中的name属性的值是需要被修改属性值的实例化对象名称
property属性是需要被修改的属性的名称 值为*,表示全部匹配 --%>
<jsp:setProperty name="p2" property=* />
通过一个<jsp:Property>标签就可以完成所有请求参数的自动设置,而且可以自动
将输入的String型变为int型的数据,这个标签的语法如下:
<jsp:setProperty>:表示操作指定javabean中的属性,里面定义了两个属性:
-name:表示使用javabean中的id的定义;
-property:表示的是设置里面的属性内容,如果为*则表示自动匹配,与表单相匹配.
如果想要让表单的参数自动设置到javabean之中的化.就需要让参数的名称与属性一致 .但是这种说法并不明确,因为在这之中还包含了一个概念.
在编写简单java类的时候类的属性使用private封装,而且编写了对应的setter和getter方法.
使用这种操作.实际上最终调用的是javabean中的setter方法,而setter方法又有严格的命名要求.所以可以简单的理解为要想设置.则参数名称必须与属性一致,否则无法完成设置.
这种操作的原理是反射机制,但是这种操作本身存在一个问题.如果要求输入的内容是int型的,则必须输入数字否则会报错
Javabean的优点必须结合表单才能看出来
方法三:
使用反射机制
javaBean设置和取得属性
1设置属性:<jsp:setProperty>
<jsp:setProperty>标签一共有四种使用方法:
-01 自动匹配:<jsp:setProperty name=”实例化对象的名称(即:useBaen标签中的id属性的值)” property=”*”/>
-02 指定属性:<jsp:setProperty name=”实例化对象的名称(即:useBaen标签中的id属性的值)” property=”属性名称”/>
-03 指定参数:<jsp:setProperty name=”实例化对象的名称(即:useBaen标签中的id属性的值)” property=”属性名称” param=”参数名称”/>
-04 指定内容:<jsp:setProperty name=”实例化对象的名称(即:useBaen标签中的id属性的值)” property=”属性名称” value=”内容”/>
建议使用第一种
1取得属性:<jsp:getProperty>
在javaBean的操作标签中也提供了专门取得属性的标签:
<jsp:getProperty>,此标签会自动调用JavaBean中的getter()方法,与设置属性的标签相比,取得属性的标签只有一种语法:
<jsp:getProperty name=”实例化对象的名称(useBean标签中id属性的属性值)”
property=”属性名称”>
jsp:getProperty 标签将获取属性值并打印到页面
当以后再JSP页面中再也看不到任何的<%%>的时候,基本上jsp的开发标准模式也就形成类
以后只要看见jsp标签上出现类id属性,则不管何种情况基本上都表示一个实例化对象,如果标签上看见类name属性,肯定找的是属性范围中的内容,就是id属性的属性值,如果有类property则表示的就是一个类中的属性
jsp:getProperty 和jsp:setProperty标签都是利用反射机制完成的
javaBean的保存范围
<jsp:useBean>指令上存在一个scope属性,表示的是一个javaBean的保存范围,保存范围一共有四种:page,request,session,application.即:jsp四大作用域
javaBean的删除
JavaBean虽然使用类<jsp:useBean>标准进行创建,但是其操作依靠的仍然是四种属性范围,如果一个JavaBean不再使用的话,则可以直接使用四中属性范围的removeAttribute()方法进行删除
-1删除page范围的JavaBean可以使用;
pageContext.removeAttribute(JavaBean的实例化对象名称);
-2删除request范围的javaBean可以使用:
request.removeAttribute(JavaBean的实例化对象名称);
-3删除session范围的javaBean可以使用:
session.removeAttribute(JavaBean的实例化对象名称);
-4删除application范围的javaBean可以使用:
application.removeAttribute(JavaBean的实例化对象名称);
javaBean的相关知识和应用的更多相关文章
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- NSString使用stringWithFormat拼接的相关知识
NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...
- iOS网络相关知识总结
iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...
随机推荐
- linux中tomcat修改错误日志路径
涉及文件 log4j.properties (一般开发将该文件放在项目的缺省目录即源包下,在文件系统里,就是在项目的/src/java目录下,缺省的文件名是log4j.properties,这样项 ...
- 线性代数的本质与几何意义 01. 向量是什么?(3blue1brown 咪博士 图文注解版)
向量是线性代数最基础.最基本的概念之一,要深入理解线性代数的本质,首先就要搞清楚向量到底是什么? 向量之所以让人迷糊,是因为我们在物理.数学,以及计算机等许多地方都见过它,但又没有彻底弄懂,以至于似是 ...
- verilog 数据格式
基数格式(通常为无符号数)[size]'base value size常量的位数 base数制o:8 b:2 d:10 h:16 https://wenku.baidu.com/view/f63daa ...
- BZOJ2282 SDOI2011消防/NOIP2007树网的核(二分答案+树形dp)
要求最大值最小容易想到二分答案.首先对每个点求出子树中与其最远的距离是多少,二分答案后就可以标记上一些必须在所选择路径中的点,并且这些点是不应存在祖先关系的.那么如果剩下的点数量>=3,显然该答 ...
- UVA11987 Almost Union-Find
题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 5 7 1 1 2 2 3 4 1 3 5 3 4 2 4 1 3 4 3 3 输出样例#1: 3 12 3 7 ...
- CRM 2013 批量更新two options的缺省值
1: string entNames = "new_print_plan,new_radio_plan,new_bill_board,new_tv_plan,new_btl_posm,new ...
- 洛谷 P3253 [JLOI2013]删除物品 解题报告
P3253 [JLOI2013]删除物品 题目描述 箱子再分配问题需要解决如下问题: (1)一共有\(N\)个物品,堆成\(M\)堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能 ...
- 【BZOJ1558】等差数列(线段树)
[BZOJ1558]等差数列(线段树) 题面 BZOJ 题解 可以说这道题已经非常毒瘤了 怎么考虑询问操作? 如果直接将一段数分解为等差数列? 太麻烦了.... 考虑相邻的数做差, 这样等差数列变为了 ...
- 做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk
前言:”懒”在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! ...
- Python(四)——PyCharm的安装和使用
python开发IDE: #专业版 #不要汉化 快捷键:Ctrl + ? = 整体注释