随笔 - 26  文章 - 2  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

一、 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是首字母大写的私有变量名称。

posted @ 2011-10-08 16:25 Java_liyadong 阅读(187) | 评论 (0)编辑 收藏

关键字

含义

Abstract

一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现

Boolean

布尔类型,只有true或者false

Break

停止,并跳出本层循环

Byte

8bit (位),也就是8个1/0表示,即二进制

Byvalue

 

Case

Java语言的关键字,用来定义一组分支选择,如果某个值和switch中给出的值一样,就会从该分支开始执行。

Catch

Java的一个关键字,用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。

Char

Java语言的一个关键字,用来定义一个字符类型

Class

Const

在Java中,const是作为保留字以备扩充,同样的保留字以备扩充还有goto.

你可以用final关键字.final也可以用于声明方法或类,被声明为final的方法或类不能被继承

一般C里是const java用final

Continue

一个Java的关键字,用来打断当前循环过程,从当前循环的最后重新开始执行,如果后面跟有一个标签,则从标签对应的地方开始执行。

Default

一个Java的关键字,配合switch跟case使用,但case中没有找到匹配时,则输出或者为default后面的语句。

Do

一个Java语言的关键字,用来声明一个循环,这个循环的结束条件可以通过while关键字设置

Double

一个Java语言的关键字,用来定义一个double类型的变量

Else

一个Java语言的关键字,如果if语句的条件不满足就会执行该语句。

Extends

extends 继承 类X 通过extend 类Y来添加功能,或者添加变量,或者添加方法,或者覆盖类Y的方法。一个接口extends另外一个接口来添加方法。

False

假的

Final

一个Java语言的关键字。你只能定义一个实体一次,以后不能改变它或继承它。更严格的讲:一个final修饰的类不能被子类化,一个final修饰的方法不能被重写,一个final修饰的变量不能改变其初始值。

Finally

一个Java语言的关键字,用来执行一段代码不管在前面定义的try语句中是否有异常或运行时错误发生。

Float

一个Java语言的关键字,用来定义一个浮点数变量

For

一个Java语言的关键字,用来声明一个循环。程序员可以指定要循环的语句,推出条件和初始化变量。

Goto

虽然为Java关键字,但是仅在C语言里面使用,Java不提供Goto语句

If

Java编程语言的一个关键字,用来生成一个条件测试,如果条件为真,就执行if下的语句。

Implements

Java(TM)编程语言的一个关键字,在类的声明中是可选的,用来指明当前类实现的接口。

Import

Java(TM)编程语言的一个关键字,在源文件的开始部分指明后面将要引用的一个类或整个包,这样就不必在使用的时候加上包的名字。

Instaceof

一个二操作数的Java(TM)语言关键字,用来测试第一个参数的运行时类型是否和第二个参数兼容。

Int

Java(TM)的一个关键字,用来定义一个整形变量

Interface

Java(TM)的一个关键字,用来定义一系列的方法和常量。它可以被类实现,通过implements关键字。

Long

Java语言的一个关键字,用来定义一个long类型的变量

Native

本地方法。

New

Java语言的一个关键字,用来创建一个新的方法

Null

Java语言的一个关键字,当String类型没赋值时,该变量的值为Null

Package

Java语言的一个关键字,包的意思

Private

Java语言的一个关键字,用在方法或变量的声中。它表示这个方法或变量只能被这个类的其它元素所访问。

Protected

Java语言的一个关键字,在方法和变量的声明中使用,它表示这个方法或变量只能被同一个类中的,子类中的或者同一个包中的类中的元素所访问。

Public

Java语言的一个关键字,在方法和变量的声明中使用,它表示这个方法或变量能够被其它类中的元素访问。

Return

Java语言的一个关键字,用来结束一个方法的执行。它后面可以跟一个方法声明中要求的值。

Short

Java语言的关键字,用来定义一个short类型的变量。

Static

Java语言的关键字,用来定义一个变量为类变量。类只维护一个类变量的拷贝,不管该类当前有多少个实例。"static" 同样能够用来定义一个方法为类方法。类方法通过类名调用而不是特定的实例,并且只能操作类变量。

Super

父类

Switch

Java语言的关键字,是一个选择语句,与case,default,break一起使用。

Synchronized

线程同步

This

Java语言的关键字,用来代表它出现的类的一个实例。this可以用来访问类变量和类方法。

Threadsafe

 

Throw

Java语言的关键字,允许用户抛出一个exception对象或者任何实现throwable的对象

Throws

Java语言的关键字,用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。

Transient

Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。

True

真的

Try

Java语言的关键字,用来定义一个可能抛出异常语句块。如果一个异常被抛出,一个可选的catch语句块会处理try语句块中抛出的异常。同时,一个finally语句块会被执行,无论一个异常是否被抛出。

Void

Java语言的关键字,用在Java语言的方法声明中说明这个方法没有任何返回值。"void"也可以用来表示一句没有任何功能的语句。

volatile

Java语言的关键字,用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。

while

Java语言的一个关键字,用来定义一段反复执行的循环语句。循环的退出条件是while语句的一部分。

posted @ 2011-10-06 21:53 Java_liyadong 阅读(213) | 评论 (0)编辑 收藏
Math.random()






返回 0 ~ 1 之间的随机数。

Math.round()
四舍五入取整。
Math.ceil()
返回值:返回大于或等于x,并且与之最接近的整数。
注:如果x是正数,则把小数“入”;如果x是负数,则把小数“舍”。
Math.floor()
返回值:返回小于或等于x,并且与之最接近的整数。
注:如果x是正数,则把小数“舍”;如果x是负数,则把小数“入”。
posted @ 2011-09-30 10:37 Java_liyadong 阅读(3071) | 评论 (0)编辑 收藏

管理权限和角色
权限和角色的区别主要在哪里
说白了,用户要操作数据库的时候,需要有对应的系统权限
要操作方案的时候,需要有对应的对象权限,为了简化管理,出现了角色


图解:


系统权限:是指执行特定类型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='用户名';


posted @ 2011-09-28 13:20 Java_liyadong 阅读(872) | 评论 (0)编辑 收藏

package com.jdbc.odbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Jdbc_Demo {
 public static void main(String[] args) {
  
  try {
   
       Class.forName("oracle.jdbc.driver.OracleDriver");
       Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
       Statement st = ct.createStatement();
       ResultSet rs = st.executeQuery("select * from emp");
        while(rs.next()){
     
             System.out.println("用户名:"+rs.getString(2));
    }
        rs.close();
        st.close();
        ct.close();
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }

}

posted @ 2011-09-26 21:57 Java_liyadong 阅读(139) | 评论 (0)编辑 收藏

package com.jdbc.odbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class jdbc_demo1 {

public static void main(String[] args) {
  
try {
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       Connection ct = DriverManager.getConnection("jdbc:odbc:mytest","scott","tiger");   //mytest为数据源名称
   
       Statement st = ct.createStatement();
       ResultSet rs = st.executeQuery("select * from emp");
   
       while(rs.next()){
       
         System.out.println("用户名:"+rs.getString(2));
    
   }
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

posted @ 2011-09-26 21:55 Java_liyadong 阅读(173) | 评论 (0)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3