一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Socket+JDBC+IO實現Java文件上傳下載器DEMO詳解

Socket+JDBC+IO實現Java文件上傳下載器DEMO詳解

2020-10-30 23:28等候稻香 Java教程

這篇文章主要介紹了Socket+JDBC+IO實現Java文件上傳下載器DEMO詳解,需要的朋友可以參考下

該demo實現的功能有:

1.用戶注冊:

注冊時輸入兩次密碼,若兩次輸入不一致,則注冊失敗,需要重新輸入。若用戶名被注冊過,則提示用戶重新輸入用戶名;

2.用戶登錄:

需要驗證數據庫中是否有對應的用戶名和密碼,若密碼輸錯三次,則終止用戶的登錄操作;

3.文件上傳

從本地上傳文件到文件數據庫中

4.文件下載:

從數據庫中下載文件到本地

5.文件更新:

根據id可更新數據庫中的文件名

6.文件刪除:

根據id刪除數據庫中某一個文件

7.看數據庫所有文件;

8.查看文件(根據用戶名);

9.查看文件(根據文件id);

代碼分為如下四個部分:Entity,Service,Socket,Util

實體包Entity中主要存放用戶實體和文件實體

User類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package Entity;
import java.io.Serializable;
/**
 * 用戶類
 * @author Administrator
 *
 */
public class User implements Serializable{
 //屬性
 private int id;
 private String username;
 private String password;
 //方法
 //構造方法
 public User(){
 super();
 }
 public User(String username, String password) {
 super();
 this.username = username;
 this.password = password;
 }
 //Getter,Setter方法
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getUsername() {
 return username;
 }
 public void setUsername(String username) {
 this.username = username;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
}

文件類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package Entity;
import java.io.Serializable;
import java.util.Arrays;
/**
 * 文件實體類
 * @author Administrator
 *
 */
public class FileEntity implements Serializable {
 //屬性
 private int fid;
 private String username;// 用戶名,方便查看某個用戶上傳的文件
 public String getUsername() {
 return username;
 }
 public void setUsername(String username) {
 this.username = username;
 }
 private String fname;
 private byte[] fcontent;
 //方法
 //構造方法
 public FileEntity(){
 super();
 }
 public FileEntity(String username,String fname, byte[] fcontent) {
 super();
 this.username=username;
 this.fname = fname;
 this.fcontent = fcontent;
 }
 //Getter,Setter方法
 public int getFid() {
 return fid;
 }
 public void setFid(int fid) {
 this.fid = fid;
 }
 public String getFname() {
 return fname;
 }
 public void setFname(String fname) {
 this.fname = fname;
 }
 public byte[] getFcontent() {
 return fcontent;
 }
 public void setFcontent(byte[] fcontent) {
 this.fcontent = fcontent;
 }
 @Override
 public String toString() {
 return "FileEntity [fid=" + fid + ", username=" + username + ", fname="
  + fname + "]";
 }
}

Service包:包括用戶服務類和文件服務類

UserSevice類包括了與用戶相關的注冊和登錄功能相關的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package Service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import Util.DBUtil;
import Entity.User;
public class UserService {
 private Connection conn=null;
 private PreparedStatement pstmt=null;
 private ResultSet rs=null;
 /**
 * 登陸
 */
 public boolean login(User user){
 String sql="select * from tb_user where username=? and password=?";
 try{
  conn=DBUtil.getConnection();
 pstmt=conn.prepareStatement(sql);
 pstmt.setString(1, user.getUsername());
 pstmt.setString(2, user.getPassword());
 rs=pstmt.executeQuery();
 if(rs.next()){
  return true;
 }
 }catch(SQLException e){
  e.printStackTrace();
 }finally{
  DBUtil.CloseAll(rs, pstmt, conn);
 }
 return false;
 }
 /**
 * 注冊
 */
 public void register(User user){
 String sql="insert into tb_user(username,password)value(?,?)";
  try {
   conn=DBUtil.getConnection();
  pstmt=conn.prepareStatement(sql);
  pstmt.setString(1, user.getUsername());
  pstmt.setString(2, user.getPassword());
  pstmt.executeUpdate();
 } catch (SQLException e) {
  e.printStackTrace();
 }finally{
  DBUtil.CloseAll(rs, pstmt, conn);
 }
 }
 /**
 * 查找tb_user,查看用戶是否已經注冊過
 */
 public boolean queryByUsername(String username){
 conn=DBUtil.getConnection();
 String sql="select * from tb_user where username=?";
 try {
  pstmt=conn.prepareStatement(sql);
  pstmt.setString(1, username);
  rs=pstmt.executeQuery();
  if(rs.next()){
  //說明已經被注冊過,要求重新填寫用戶名
  return true;
  }
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return false;
 }
}

文件服務類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package Service;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import Entity.FileEntity;
import Util.DBUtil;
public class FileService {
 private Connection conn=null;
 private PreparedStatement pstmt=null;
 private ResultSet rs=null;
 /**
 * 保存文件到數據庫,類似用戶的注冊功能
 * @param fileEntity
 */

以上所述是小編給大家介紹的Socket+JDBC+IO實現Java文件上傳下載器DEMO詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.imooc.com/article/17927

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲 日本 中文字幕 制服 | 久青草国产97香蕉在线视频 | 精品国产一区二区 | 99久久免费国产精品热 | 亚洲美色综合天天久久综合精品 | 午夜深情在线观看免费 | 日韩成本大片35分钟免费播放 | 国产喂奶300部 | 成人欧美一区二区三区黑人 | 国产综合久久久久 | 香蕉在线精品一区二区 | 久久综合色超碰人人 | 午夜免费无码福利视频麻豆 | 故意短裙公车被强好爽在线播放 | 日本特黄一级午夜剧场毛片 | 隔壁老王国产精品福利 | www91在线观看| 国产欧美一区二区三区免费看 | 亚洲国产三级在线观看 | 日本人黄色 | 久久免费资源福利资源站 | 国产高清在线观看 | 男人捅女人的鸡鸡 | 国产在线视频一区二区三区 | 成人免费视频一区二区三区 | 香蕉久久ac一区二区三区 | 狠狠色婷婷狠狠狠亚洲综合 | 草莓香蕉绿巨人丝瓜榴莲18 | 羞羞答答影院在线 | 亚洲一区二区福利视频 | 2018天天弄| 好大好湿好硬好爽好深免费视频 | 给我免费的视频在线观看 | 日韩视频在线观看中字 | 色综合合久久天天综合绕视看 | 美女脱了内裤打开腿让你桶爽 | 国产一区二区三区欧美精品 | 97影院秋霞国产精品 | 日本免费一区二区三区a区 日本免费三片在线观看 | 欧美另类bbbxxxxx另类 | 处女呦呦 |