1.build path构建路径,按包名成为路径
2.jdbc的代码
//注册驱动,按类名去lib找文件,然后加载到jvm中/当前类中,所以就可以使用DriverManager了,可是为什么要用这一句呢?,我之前导入jar包都可以使用里面的类的.原来DriverManager不是jdbc的类
//jdk1.6必须要写, jdk1.6以后更新为jdbc4不需要手动加载类文件,则也就是我经常看到为什么jar包,as lib或者build path就可以用的原因
Class.forName("com.mysql.jdbc.Driver");
//避免查询条件有中文
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/stu?useUnicode=true&characterEncoding=utf-8","root","1234");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from student");
//这里不能插入,不然后面报rs错误,结果已经被改变,更新不会
int i = stat.executeUpdate("update dept set dname='aa' where deptno=8");
while(rs.next()){
rs.getInt("id");
rs.getString("name");
rs.getInt(1);//也可以是列号得到数据
}
3.动态SQL语句 PreparedStatement接口 预编译用占位符?代表要替代的数据
好处
1. 简化代码,便于sql书写
2. 防止sql注入攻击
3. 提高java操作数据库预编译效率(在java编译,不用在数据库编译)代码 必须每用一次写一个sql语句,不能共用一个ps对象
String sql="select * from id=? and school =?";
PreparedStatement ps=connection.prepareStatement(sql);
ps.setInt(1,"1");//都是字符串,也可以和类型一样
ps.setString(2,"ngs");
ps.execute();
3.socket网络编程
c/s client/server(主从结构) 服务器一直处于等待状态(监视)客户端发请求
1个服务器对应多个客户端p2p 对等网络
网络协议
1. ip 不能保证数据的顺序 保证目的地
----1. 127.0.0.1回送地址,送回给本机处理
----2. 主机名称hostname www.baidu.com dns(domain name server)服务器把它转ip
----3. 端口 ip地址是主机.端口是他的进程pid 16位数字 [0,65535] 小于1024端口给系统运行
2. tcp 数据安全的可靠的,保证数据顺序
3.upd 数据不可靠但是也有应用场景,比如短视频,掉帧没有关系InetAddress类 处理ip地址和主机名字
InetAddress addr=InetAddress.getByName(“www.baidu.com”); //可以得到主机名和ip地址(通过域名)
好用
adr=InetAddress.getLocalHost();//得到本地主机名字
sout(adr);//得到 主机名称/IP地址
sout(adr.getHostAddress())//地址 getHostName() ip的主机名
4.socket代码 服务器socket与客户端socket一次通信就是一次握手(它们的ip相反过来本机和远程主机)(建议先编写完整的一边,再编写另外一边)
1.ServerSocket(服务器里写端口) 和Socket(客户端里写服务器ip和端口,套接字)
ServerSocket ssk=new ServerSocket(2530);//本机的2530作为服务器端口
Socket sk=sk.accept()//监视客户端的请求.,一直阻塞等待.成功连接才得到Socket是连接客户端的对象
//输入流接收数据,输出流发出数据
s.getInputStream();//得到输入流 输出<---| |<--输入
OutputStream out=s.getOutputStream();
out.write("hello".getBytes()); //字节输入流
out.close();
s.close();
//客户端写,不用监听得到对象
Socket s=new Socket("127.0.0.1",2530);//服务器端的ip地址
byte []buff=new byte[1024];
InputStream in=s.getInputStream();
int n=in.read(buff);//返回处理长度
sout(new String(buff,0,n))
OutputStream out=s.getOutputStream();
5.简化(while和继承线程,每个线程都是一个socket)
run():
while(this.isAlive()){ //线程活着
}
Server:
while(true){ //一直运行服务器
Socket s=new Socket("127.0.0.1",2530);
OutputStream out=s1.getOutputStream();
DataOutStream data=new DataOutStream(out);
data.writeUTF("hello");
s1.close();
}
Client:
InputStream in= s;
DataInStream data=new DataInStream(in);
String msg=data.readUTF();
s.close();
6.UDP通信数据报通信 传递信息速度更快,但没有TCP可靠,很多场合不需要全部全部到达目的,视频直播
TCP transport control protocol
//会把数据打包,发送,报文,服务端和客户端用同一个对象
public class udpServer {
public static void main(String[] args) throws IOException {
DatagramSocket socket=new DatagramSocket(12345);
//创建一个InetAddree,自己测试的时候要设置成自己的IP地址
InetAddress serverAddress=InetAddress.getByName("127.0.0.1");
byte buf[]=new byte[1024];
//创建一个 DatagramPacket 对象,并指定要将这个数据包发送到网络当中的哪个地址以及端口号
DatagramPacket packet=new DatagramPacket (buf,buf.length,serverAddress,12345);
//调用 socket 对象的 send 方法,发送数据
socket.receive(packet);
byte[] data = packet.getData();
System.out.println(new String(data));
}
}
//客户端
public class UDPClient {
public static void main(String[] args) throws IOException {
try
{
DatagramSocket socket=new DatagramSocket(12344);
//创建一个InetAddree,自己测试的时候要设置成自己的IP地址
InetAddress serverAddress=InetAddress.getByName("127.0.0.1");
String str="Hi, this is the string from the Android Client!";
byte buf[]=new byte[1024];
buf="你好".getBytes();
//创建一个 DatagramPacket 对象,并指定要将这个数据包发送到网络当中的哪个地址以及端口号
DatagramPacket packet=new DatagramPacket (buf,buf.length,serverAddress,12345);
//调用 socket 对象的 send 方法,发送数据
socket.send (packet);
Thread.sleep(1000);
}
catch(SocketException e)
{}catch(UnknownHostException e){}catch(IOException e){}catch(InterruptedException e){}
}
}
7.URL编程 universal resource locator网络资源定位器
http://www.baidu.com:80 //有协议,域名/ip 端口
url= new URL(" http://www.baidu.com:80 ");
u.getProtocol();//得到协议
u.getPort();//得到端口
u.getHost();//指定主机名
u.getFile();//得到文件名
//读到网络文本文件和 ...
Object obj=u.getContent();
=new InputStreamReader((InputStream)obj);
//记录连接得到具体连接地址的信息
uc1=u1.openConnection();
uc1.getContentLength();
//例子
public class URIDemo2 {
public static void main(String[] args) throws IOException {
try{
URL url = new URL("file:/d:\\1.txt"); //注意
Object content = url.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream) content));
String str="";
while ((str=reader.readLine())!=null){
System.out.println(str);
}
}catch (Exception e){
}
}
}
public class URLDemo {
public static void main(String[] args) throws MalformedURLException {
URL url = new URL("https://www.baidu.com/");
URLConnection urlConnection = url.openConnection();
System.out.println("文件名"+url.getFile());
System.out.println("主机名"+url.getHost());
System.out.println("端口号"+url.getPort());
System.out.println("端口号"+url.getProtocol());
Object content = null;
try {
content = url.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader((InputStream) content));
String str="";
while ((str=reader.readLine())!=null){
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}