2005年3月27日
#
IO两大主流,16位和8位
16位对应Writer 和 Reader
根据编程目的不同有
FileWriter和FileWriter 对文件进行读写。
StringWriter、StringReader 对内存里的位置进行读写。
PipedWrier、PipedReader 两个线程间通讯用
8位对应InputStream 和 OutputStream
根据编程目的不同有
FileInputStream、FileOutputStream 对文件进行读写
ByteArrayInputStream、ByteArrayOutputStream 对字节数组进行读写
PipedInputStream、PipedOutputStream 线程间通讯用
注意:在数据流里不存在字符串的IO操作,那样就要用Reader和Writer类
二者的桥梁在InputStreamReader、OutputStreamWriter
BufferedWriter、BufferedReader、BufferedInputStream、BufferedOutputStream
是用来提高IO速度的,注意包装的时候最好最先包装Buffered,这样效果会好些。
包装模式的理解。Package Pattern
各种Data Type的长度的记忆.
还要注意对象流的使用.
高级IO操作:
信道IO,java.nio.channels包
他的主要特征是可以对内存进行快读写操作,进行内存映射.
同时可以创建各种数据类型的缓冲区,从而提高IO操作效率.
JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器。
一,事件源:一个产生事件的对象。当这个对象的内部状态改变时,事件就会产生。一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定时间的通知。每一种事件都有它特定的注册方法,通用形式为:addTypeListener(TypeListener e)
二,事件:一个事件是描述了一个事件源的状态改变的对象。他可能通过一个人与图形用户接口的交互产生。如输入文字,点击鼠标。也可能不是由这些产生,如:一个事件可能在定时器中到期而产生。当然用户也可以自由的定义自己的事件。
注意:其中的Type可以是Key, Mouse,等。一个事件源可能允许注册多个事件监听器,也可能只允许注册一个监听器。
事件源也允许注销一个事件监听器,通用方法为:removeTypeListener(TypeListener e);
三,事件监听器:一个当事件发生时的时候被通知的对象。它有两个要求:
1,它必须在事件源中注册。
2,它必须实现接受和处理事件通知的方法。
还是来个比喻吧:你要想成为一个可以接受事件并处理事件的对象(即事件监听器),必须继承TypeListener类,其中的Type为事件类型。然后去注册你想监听的对象,并自己实现处理事件发生的方法,然后你就坐在等待事件的发生啦,哈哈!附源程序研究用:
/*===============DemoEvent.java清单=============*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{
public String msg = "";
public int mouseX = 0, mouseY = 0;
/*
*注册事件监听器
*/
public void init() {
addMouseListener(this);
addMouseMotionListener(this);
}
/*
*下面为所有处理MouseEvent的方法,当然你可以自定义自己的方法,但不能少了这些。
*/
public void mouseMoved(MouseEvent me) {
showStatus("mouse moved at :"+me.getX() +"," + me.getY());
}
public void mouseReleased(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "UP";
repaint();
}
public void mouseClicked(MouseEvent me) {
mouseX = 0;
mouseY = 10;
msg = "Mouse clicked!";
repaint();
}
public void mouseEntered(MouseEvent me) {
mouseX = 0;
mouseY = 10; ;
msg = "Mouse Entered!";
repaint();
}
public void mouseExited(MouseEvent me) {
mouseX = 0;
mouseY = 0;
msg = "Mouse Exited!";
repaint();
}
public void mouseDragged(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "*";
repaint();
}
public void mousePressed(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "Down";
repaint();
}
/*===================方法说明结束==================*/
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
}
/*
*相关说明:这里的DemoEvent既是事件源也是事件监听器。
*
*/
/*===================DemoEvent.java清单===================*/
什么是IO
IO(Input/Output)是计算机输出/输出的接口。Java的核心库java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。关于NIO我们在后面还有专门的讨论。
流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。
Java IO模型
Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。
Java的IO体系分Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码。基本上,所有的IO类都是配对的,即有XxxInput就有一个对应的XxxOutput。
Java IO教程
如果您对Decorator模式非常了解,就能轻易地看出Java的IO类结构:根接口是InputStream/OutputStream,充当数据源的IO类有 FileInputStream/FileOutputStream, ByteArrayInputStream/ByteArrayOutputStream等,充当装饰功能的IO类有 BufferedInputStream/BufferedOutputStream, DataInputStream/DataOutputStream等,它们都是继承装饰接口 FilterInputStream/FilterOutputStream。使用IO时,首先创建一个数据源IO,然后根据需要的功能创建装饰类IO,其构造函数的参数为已创建的数据源IO。我们以创建一个具有缓冲的文件输入流为例,假定需要从磁盘读取文件“C:\log.txt”:
// 创建一个FileInputStream: FileInputStream fileInput = new FileInputStream("C:\\log.txt"); // 创建一个BufferedInputStream: BufferedInputStream bufferedInput = new BufferedInputStream(fileInput); // 现在得到的bufferedInput即是具有缓冲的文件输入流 |
或者进一步简写如下:
InputStream input = new BufferedInputStream( new FileInputStream("C:\\log.txt")); // 现在得到的input即是具有缓冲的文件输入流 |
在您对Java的IO有了总体了解后,我们推荐您看看教程Introduction to Java I/O和I/O: Reading and Writing。
配置环境:
1、Windows XP Pro sp2
首先,解开MySQL 的JDBC driver的压缩包,其实在这个包中真正有用的就是mysql-connector-java-3.0.9-stable-bin.jar,所以我直接把它放到c:systemmysql-jdbc(这个目录可以自己定义)下
在JBuilder中,做如下的操作:
一、选择Tool -> Configure Libraries,在Configure Libraries窗口中选择左边列表框下的New,弹出New Library Wizard 窗口,在Name中输入mysql(可以自己定义),Location中选择User Home,点击Add,选择mysql jdbc的路径:c:systemmysql-jdbc mysql-connector-java-3.0.9-stable-bin.jar,点击ok(两次);
二、选择Project -> Project Properties -> Paths -> Required Libraries -> 点击Add,选择第一步骤中添加的User Home下的mysql,点击ok(两次);
三、选择Tool -> Enterprise Setup -> Database Drivers -> 点击Add,选择刚添加的User Home下的mysql,点击ok,在列表框中出现mysql.config,点击ok;
四、提示重新启动JBuilder,设置才能生效,确定后,重启JBuilder;
五、选择Tool -> Database Pilot ,在Database Pilot窗口中选择View -> Options -> Drivers -> 点击Add
Driver class中输入:com.mysql.jdbc.Driver
Sample URL中输入:mysql://localhost/DataBaseName 点击ok;
六、在Database Pilot窗口中选择File -> New,在New URL 窗口中,
Driver:从列表中选择第五步骤建立的com.mysql.jdbc.Driver
URL:将DataBaseName改为存在的数据库,本例中的URL如下:jdbc:mysql://localhost/admin,点击ok;
七、在Database Pilot窗口中Database URLs列表中双击刚建立的url,输入连接数据库的用户名、密码,连接成功。
附测试程序:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="errorinfo.jsp"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%
//Initialize
java.sql.Connection conn;
java.sql.Statement stmt;
java.sql.ResultSet rst;
Class.forName("com.mysql.jdbc.Driver").newInstance();
String strUrl = "jdbc:mysql://localhost/admin";
String strQuery = "select * from test3";
conn= DriverManager.getConnection(strUrl, "root", "");
stmt = conn.createStatement();
rst = stmt.executeQuery(strQuery);
rst.next();
%>
<%=rst.getString("a")%>
<%
rst.absolute();
conn.close();
%>
注:test3为数据库admin里面的一个表。
1,
安装使用默认的安装也可以,也可以自定义安装,都较简单。
安装后为了使用方便,最好建立环境变量:path= %path%;你的mysql安装路径\bin 就可以了。
首先要跟MySQL 服务器连接:
mysql -uroot -p //sql用户默认没有密码
会出现提示符: mysql>_
然后选择使用的数据库:
use mysql //mysql为一个系统的数据库名,还有test,不过是一个空的数据库.
然后就可以进行相应的操作:
mysql> 输入相应的操作指令,然后加上 \g就可以执行了。
example:
mysql>select * from user /g 回车
以下是摘抄自网上的关于修改密码,新建用户的操作。
二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
我的开发平台选用了Weblogic Workshop 8.1,服务是用的Weblogic Server, Windows XP Pro SP2平台。
相关技术站点: http://dev2dev.bea.com.cn/index.jsp
第一次搭建这样的平台,开始到网上找了很多的技术文章看了看。由于机器的配置不高。所以还找了一些关于配置Weblogic Server的
文章。
安装BEA产品的目录为D:\bea,这样,Weblogic Wrokshop就在bea目录下面的Weblogic81文件夹里面。
下面对BEA目录下的文件及其Weblogic81目录下面的一些文件夹内容作一个介绍:
BEA_HOME_DIR:
jdk131_xx Sun Java 2 SDK的1.3.1版本,xx指明安装在机器上的Sun SDK版本。
jrockit xxx. Weglogic JRockit SDK. xxx指明了安装在机器上的版本。
logs 包含安装和卸载BEA主目录的历史文件。
utils 包含支持安装所有BEA Weblogic 品台产品的有用工具。utils.jar包含有支持 UpdateLicense工具的代码。
user_projects 用户自己再创建的工程文件就保存在这里。
license.bea 基于XML格式的license文件,含有安装的所有BEA WEBLOGIC产品的LICENSE键值。,增加一个有效(永久 的
)的LICENSE或因附加功能更新LICENSE时,必须使用UPDATELICENSE工具更新LICENSE文件,注意:最好不要
手工编辑这个文件。
registry.xml 注册文件。包含安装在目标机器上的所有BEA产品的一致性记录,是与产品有关的信息。例如版本号、服务
号、和安装目录等。
UpdateLicense(.cmd/.sh)
一个命令文件(windows NT/2000)或shell脚本(UNIX),用与通过新LICENSE文件更新目前的LICENSE文件。结
果是一个合并的LICENSE,包含存在的和新的LICENSE两部分。
Weblogic81:
common Weblogic平台组件共享的文件,包括一个含有jar文件的摸班目录,供配置向导在创建域时使用,配置向导
目录内容并显示基于jar文件的模版选项。
integration Weblogic Integration程序文件。
javalin 100%的纯JAVA编译器,用于Weblogic平台中的组件的编译。
p13n weblogic可移植性个性化文件和库。
portal weblogic portal程序文件。
samples 例子代码,资源和预配置的例子域,被设计来用来帮助用户学习开发自己的应用。
server weblogic server程序文件。
uninstall 卸载weblogic平台平台所需要的代码。
workshop weblogic weorkshop平台程序和文件。
安装完后新建一个工程,然后按CTRL+F9键来编译JSP和JAVA文件。然后按F9就可以执行了。当然你也可以直接在浏览器里面输入相应地址
来执行。假如无误的话浏览器应该正常显示文字。
weblogic为学习者提供了一些例子。用户执行 bea\weblogic81\samples\domains\workshop 下面的startweblogic.cmd就可以启动
weblogiic服务器,然后在浏览器里面输入:http://localhost:7001/console/ 就可以进入控制台来管理了。
控制台用户帐号的建立:开始-》程序-》weblogic Platform -》configuration wizard就可以新建一个帐号。
关于console的配置学习以后将陆续有讲解,请期待......
附录:新建一个工程后将在%BEA_HOME%\user_projects\applications\下面新建一个文件夹文件夹名字就是新建的Projects的名字。里面
一共有5个文件夹和两个文件:
Directorys:
.workshop, APP _INF, Project_nameWeb, MEAT_INF, Schemas
Files:
.beabuild, Project_name.work
其中的Project_name为你新建的Projects的名字。这样在Project_name下面就是保存的你新建的网站项目的一些文件,如: index.jsp,
然后你在Weblogic Workshop里面在直接编辑他们,写入代码。完成你的项目。
测试:
再在Weblogic Workshop里面启动服务器,当然也可以手动启动服务器, 在浏览器里面输入:
http://localhost:7001/Projects_nameWeb 就可以测试你编写得你的网站项目了。
以后将陆续推出一系列的数据库编程文章,请关注我的Blog.