Java学习--网络,图形界面和数据库

深入理解java2:软件开发常用实用技术

1文件及目录:java.io

1.1基本操作

File f;
f=new File("a.txt");//当前目录下的文件
f=new File("e:\\ex\\","a.txt");//目录+文件
//目录也当做文件处理
File path=new File("e:\\ex\\");
File f=new File(path,"B.txt");

1.2常用操作函数

1.3RandomAccessFile:随机指定到文件中某个位置

2正则表达式

2.1基本概念:

写法分3部分:1哪类字符 2{数量}3位置
java
[0-9]{2,4}\b--匹配123 1988 20015 16
第1部分
.--通配
[]--字符集
[^]--排斥字符集
\d--[0-9]
\D--[^0-9]
\s--空白符
\S--非空白符
\w--[a-zA-Z0-9]单词字符
\W--[^\w]
第二部分
*--0或多个
+--1或多个
?--0或1次
n--n次
第三部分
\b--单词边界
()--组号
实例:
//匹配网址:\b(href)=('[^']+');//实际使用时还要\转义

2.2基本应用:java.util.regex

//分割
Pattern p=Pattern.compile("[,\\s]+");
String[] result=
    p.split("one,two,three four,five");
//匹配
boolean ok=Pattern.matches(patternString,String a);
Pattern pattern=;
String text=;
Matcher matcher=pattern.matcher(text);
StringBuffer buffer;
//对每个匹配到单元
while(matcher.find()){
    //匹配单元的整个
    buffer.append(matcher.group());
    //匹配单元的第二对括号
    buffer.append(matcher.group(2));
}

2.3举个例子:网络爬虫

输入流:
正则:
容器:
线程:

3图形界面

3.1基本知识

界面:java.awt;javax.swing
组件:容器和非容器
容器:顶层容器和非顶层容器

3.2实现界面三部曲:Eclipse-new-Other-windowsbuilder。。

创建组件
public class myjframe extends JFrame{
    JLabel lb1;
    public myjframe(){
        super("Test JFrame");
        //new组件
        lb1=new JLabel("hello swing");
        //添加
        getContentPane().add(lb1);
        //设置属性
        setSize(300,200);
        //默认关闭按钮
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    main{
        new myjframe().setVisible(true);
    }
}
布局
//FlowLayout:流动式自动换行
//左对齐,并设置间距
setLayout(new FlowLayout(FlowLayout.LEFT,10,5));

//BorderLayout:方框式分几个框
setLayout(new BorderLayout());
//加入时要设置NORTH SOUTH EAST WEST CENTER
add(b1,BorderLayout.NORTH);

//网格式,分成相等的网格,要行数和列数
setLayout(new GridLayout(4,5));
//一般组件加入到面板中,使用面板布局
//之后面板在加入到JFrame中,使用JFrame的布局
创建事件:添加事件处理器
//new 一个ActionListener,匿名类或者lambda方式
b1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                //逻辑代码
            }           
        })
//lambda
b2.addActionListener((e)->{});
//事件的方法
e.getSource();
//各种不同的listener与Adapter
//实现Listener的不同方法
//匿名类使用最多
//一个重写-lambda

组件对象和监听器:一对多,多对一(e.getSource())
更新界面:线程里面(几乎所有情况)更新界面都要
SwingUtilities.invokeLater(()->{})

3.3举个例子:

1. 小小计算器
2. 排块游戏
3. 文本编辑器

4网络

4.1URL:java.net.URL

URL url=new URL("www.xxx.xxx");
InputStream stream=url.openStream();

4.2第三方库:httpclient

引入库:buildPath-add external archives
Requset操作
//httpclient得到网页
String str= Request.Get("xxx").execute()
        .returnContent().asString();
//得到图片
BufferedImage img=ImageIO.read(new URL(imageURL));
ImageIO.write(img,"gif",new File("d:\\aaa.gif"));
举个例子:获取建议词

4.3实现底层网络通信Socket,ServerSocket

  1. 客户端和服务端:
  2. 举个例子:多线程聊天室

5多媒体

5.1绘图

  1. Graphics 及Graphics2D
  2. 画图片

5.2音视频

  1. 音乐播放器
  2. 视频播放器

6数据库

6.1基础知识:数据库管理系统

  1. 共享性独立性完整性冗余数据少
  2. 数据定义、操纵、完整、安全、并发
  3. 关系型数据库:表的形式
  4. SQL语句:字符串用”,表名字段名用[]括起来,结尾不用;

    select * from [table] where .. group by|order by 
    insert into [table] (field,..) values(content,..)
    update [table] set field=...where ...
    delete from [table] where ...
    CREATE TABLE [tablename] (field1,.2,.3,..) 
    DROP TABLE [tablename]

6.2jdbc:java访问数据库的基本技术,增加相应驱动程序

//调用jdbc接口,忽略底层实现
//加载驱动程序
Class.forName("xxx.jdbc");
//得到与数据库的连接
String connString="jdbc:sqlite:d:/test.db";
//Connection 类实例,表示与数据库的连接
Connection conn=DriverManager.getConnection(connString);
//自动提交false
conn.setAutoCommit(false);
//得到一个Statement对象,表示一条数据库语句
Statement stmt=con.createStatement();
//执行非查询excuteUpdate
stmt.executeUpdate("delete from table");
//手动提交
conn.commit();
//执行查询的excuteQuery,rs是其返回结果集
ResultSet rs=stmt.executeQuery("select from ");
//访问结果集,按行遍历
while(rs.next()){
   //也可以用从1开始的字段顺序号
   int i=rs.getInt("field1");
   String s=rs.getString("field2");
   //do something
}
rs.close();
//stmt.close();
conn.close();

6.3基于数据库的应用:C/S模式

client通过sql向server发送请求

使用PreparedStatement:快速,避免sql注入攻击
String sql2="select ..where like ? and age>?";
//预先编译的查询语句
PreparedStatement pstmt=connection.prepareStatement(sql2);
//可以调整参数,%是sql任意字符
pstmt.setString(1,"%r%");
//调整参数2,从1开始编号
pstmt.setString(2,18);
//执行,sql语句已经编译好
ResultSet rs=pstmt.excuteQuery();
显示数据标:JTable
//见代码文件
举个例子:小小通讯录
    1. 界面参数转为sql语句
    2. 数据访问对象DAO,封装查询和数据对象
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值