一、 javabean 是什么?
Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类,
就是有默然构造方法,只有get,set的方法的java类的对象.
专业点解释是:
JavaBean定义了一组规则
JavaBean就是遵循此规则的平常的Java对象
满足这三个条件:
1.执行java.io.Serializable 接口
2.提供无参数的构造器
3.提供getter 和 setter方法访问它的属性.
简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。
JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。
易于维护、使用、编写。
可实现代码的重用性。
可移植性强,但仅限于Java工作平台。
便于传输,不限于本地还是网络。
可以以其他部件的模式进行工作。
对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。
JavaBean组件与EJB(Enterprise JavaBean,企业级JavaBean)组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。
2 使用JavaBean的原因
程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。
JavaBean传统应用于可视化领域,如AWT(窗口工具集)下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet成为当前开发Web应用的主流模式。
3 JavaBean的开发
在程序设计的过程中,JavaBean不是独立的。为了能够更好地封装事务逻辑、数据库操作而便于实现业务逻辑和前台程序的分离,操作的过程往往是先开发需要的JavaBean,再在适当的时候进行调用。但一个完整有效的JavaBean必然会包含一个属性,伴随若干个get/set(只读/只写)函数的变量来设计和运行的。JavaBean作为一个特殊的类,具有自己独有的特性。应该注意以下3个方面。
JavaBean类必须有一个没有参数的构造函数。
JavaBean类所有的属性最好定义为私有的。
JavaBean类中定义函数setXxx() 和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。
管理权限和角色
权限和角色的区别主要在哪里
说白了,用户要操作数据库的时候,需要有对应的系统权限
要操作方案的时候,需要有对应的对象权限,为了简化管理,出现了角色
图解:

系统权限:是指执行特定类型sql命令的权利。他用于控制用户可以执行的一个或是一组
数据库操作。比如,当用户具有了create
table权限的时候,它就可以在其的方案中建表了。
如果有create any table
权限的时候,可以在其他方案中建表了。在oracle中大概有100多权限
常用的有:
create
session 连接数据库
create view
建视图
create procedure
建过程、函数、包
create cluster
建族
create table
create public synonym 建同义词
create trigger 建立触发器
显示系统权限
查询数据字典视图system_privilege_map
select * from
system_privilege_map order by name;
授予系统权限
dba身份授予,如果带有with admin
option选项,则被授予权限的用户还可以给其他用户授予权限
例子:
1、创建两个用户zqh1、zqh2
conn
system/manager;
create user zqh1 indendified by 123;
create user zqh2
indendified by 321;
这时两个用户登录是登录不了的
2、给zqh1授权权限
grant
create session,create table to zqh1 with admin option;
--------这意味zqh1可以给其他用户继续授权
grant create view to
zqh1;
这时zqh1可以登录了
3、zqh1给zqh2授权
conn
zqh1/123;
grant create session,create table to zqh2 with admin
option;
grant create view to zqh2;------------no ok!!!!
回收系统权限
使用revoke命令,注意系统权限的级联回收问题---【不是级联回收】
根据上面zqh1、zqh2
system----------->zqh1---------------->zqh2
现在用system执行如下操作:
revoke
create session from zqh1;
-------思考:zqh2还能登陆吗?yes!!!
========================================================================
对象权限:指访问其它方案对象的权限。比如zqh1用户要访问scott.emp表,必须在emp表上
具有对象权限
常用的有:
alter
delete select insert update index索引 reference 引用 execute执行
显示对象权限
可以显示用户或是角色所具有的对象权限,视图dba_tab_privs
conn
system/manager;
select distinct privilege from dba_tab_privs;
select
grantor ,owner,table_name,privilege from dba_tab_privs where grantee='BLAKE'
授予对象权限
对象权限可以授予用户、角色和public。授予用户的时候可以用with
grant option
但是授予
角色的时候不可以用。
1、monkey用户操作scott.emp表,则必须授与相应的对象权限
conn
system/manager as sysdba;
create user monkey identified by 123;
grant
create session to monkey;
conn monkey/123;
select * from scott.emp;
-------报错,表或者视图不存在
-------------------------------------------------------------
(1)monkey用户查询scott.emp表数据,如何执行?
conn
scott/tiger;
grant select on emp to monkey;
select * from
scott.emp;
(2)monkey用户修改scott.emp表数据,如何执行?
grant update emp to
monkey;
(3)monkey用户删除scott.emp表数据,如何执行?
grant delete emp to
monkey;
(4)有没有更加简单的方法,一次把所有权限赋给monkey?
grant all on emp to monkey;
2、能否对monkey访问权限更加精细控制
(1)monkey只可以修改scott.emp的表的sal字段,怎么操作?
grant
update on emp(sal) to
monkey;
(2)monkey只可以查询scott.emp的表的ename,sal数据,怎么操作?
grant select on
emp(ename,sal) to monkey;
3、授予alter权限
monkey要修改scott.emp表的结果
则必须授予alter对象权限
conn
scott/tiger;
grant alter on emp to monkey;
4、授予execute权限
monkey想要执行其他方案的包/过程/函数,则须有execute权限
conn
system/manager;
grant execute on dbms_transaction(包) to monkey;
5、授予index权限
想在别的方案的表上建立索引
conn scott/tiger;
grant
index on scott.emp to monkey;
6、使用with grant option选项
conn scott/tiger;
grant select
on emp to monkey with grant option;
回收对象权限
对象的权限的回收是否会级联收回呢?【yes!!!!】
scott--------------->zqh1------------->zqh2
conn
scott/tiger@orcl
revoke select on emp
from zqh1; -------zqh2能否查询scott.emp表【no!!!】
总结:关于级联回收,系统权限没有级联回收,对象权限有级联回收!!!!!
角色:相关权限命令的集合,使用角色就是为了简化管理。
分类:预定义和自定义角色两类
预定义角色是oracle提供的角色,每种角色
都用于执行一些特定的管理任务。connect/resource/dba
(1)connect角色具有的系统权限
alter session
create
cluster
create database link
create session
create table
create view
create sequence
创建角色
create role zqhrole not
identified;
角色授权
conn system/manager;
grant
create session to zqhrole with admin option;----连接数据库的授权
conn scott/tiger@orcl;
grant
insert,update,delete on emp to zqhrole;-----提倡表是谁的,由谁给角色授权
把角色分配给用户
conn system/manager;
create user
zqh3 identified by 123;
grant zqhrole to zqh3 with admin option;
zqh3登录
conn zqh3/123;
select * from
scott.emp;-------ok!!!!!
删除角色
drop role 角色名
问题:
假如zqhrole角色删除了,那么zqh3还能登录吗????
conn system/manager;
drop role zqhrole;
conn zqh3/123;【登不上去了!!!!!!】
显示角色信息:
(1)显示所有的角色
select * from
dba_roles;---------25个角色
(2)显示角色具有的系统权限
select privilege,admin_option from
roles_sys_privs where
role='角色名';
(3)显示角色具有的对象权限
查询dba_tab_privs
(4)显示用户具有的角色,及默认角色
查询dba_role_privs
select
grant_role,default_role from dba_role_privs where grantee='用户名';