最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Socket+JDBC+IO實現(xiàn)Java文件上傳下載器DEMO詳解

 更新時間:2017年05月26日 12:02:18   作者:等候稻香  
這篇文章主要介紹了Socket+JDBC+IO實現(xiàn)Java文件上傳下載器DEMO詳解,需要的朋友可以參考下

該demo實現(xiàn)的功能有:

1.用戶注冊:

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

2.用戶登錄:

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

3.文件上傳:

從本地上傳文件到文件數(shù)據(jù)庫中

4.文件下載:

從數(shù)據(jù)庫中下載文件到本地

5.文件更新:

根據(jù)id可更新數(shù)據(jù)庫中的文件名

6.文件刪除:

根據(jù)id刪除數(shù)據(jù)庫中某一個文件

7.看數(shù)據(jù)庫所有文件;

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

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

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

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

User類:

package Entity;
import java.io.Serializable;
/**
 * 用戶類
 * @author Administrator
 *
 */
public class User implements Serializable{
 //屬性
 private int id;
 private String username;
 private String password;
 //方法
 //構(gòu)造方法
 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;
 }
}

文件類:

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;
 //方法
 //構(gòu)造方法
 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包:包括用戶服務(wù)類和文件服務(wù)類

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

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,查看用戶是否已經(jīng)注冊過
 */
 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()){
  //說明已經(jīng)被注冊過,要求重新填寫用戶名
  return true;
  }
 } catch (SQLException e) {
  e.printStackTrace();
 }
 return false;
 }
}

文件服務(wù)類:

 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;
 /**
 * 保存文件到數(shù)據(jù)庫,類似用戶的注冊功能
 * @param fileEntity
 */

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

相關(guān)文章

  • Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊列

    Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊列

    這篇文章主要介紹了Spring?Boot?使用?Disruptor?做內(nèi)部高性能消息隊列,工作中遇到項目使用Disruptor做消息隊列,對你沒看錯,不是Kafka,也不是rabbitmq。Disruptor有個最大的優(yōu)點就是快,還有一點它是開源的哦,下面做個簡單的記錄
    2022-06-06
  • JavaWeb實現(xiàn)注冊用戶名檢測

    JavaWeb實現(xiàn)注冊用戶名檢測

    這篇文章主要為大家詳細介紹了JavaWeb實現(xiàn)注冊用戶名檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • java基于遞歸算法實現(xiàn)漢諾塔問題實例

    java基于遞歸算法實現(xiàn)漢諾塔問題實例

    這篇文章主要介紹了java基于遞歸算法實現(xiàn)漢諾塔問題,結(jié)合具體實例形式分析了java遞歸算法的實現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-07-07
  • Java HashMap在遍歷時刪除元素的實現(xiàn)

    Java HashMap在遍歷時刪除元素的實現(xiàn)

    本文主要介紹了Java HashMap在遍歷時刪除元素的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • SpringMVC底層執(zhí)行流程及原理解析

    SpringMVC底層執(zhí)行流程及原理解析

    這篇文章主要介紹了SpringMVC底層執(zhí)行流程及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot實現(xiàn)yml配置文件為變量賦值

    SpringBoot實現(xiàn)yml配置文件為變量賦值

    這篇文章主要介紹了SpringBoot實現(xiàn)yml配置文件為變量賦值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring Boot集成spring-boot-devtools開發(fā)時實現(xiàn)熱部署的方式

    Spring Boot集成spring-boot-devtools開發(fā)時實現(xiàn)熱部署的方式

    這篇文章主要介紹了Spring Boot集成spring-boot-devtools開發(fā)時實現(xiàn)熱部署的方式,文中還給大家提到了spring boot 實現(xiàn)熱部署的方式及集成注意事項,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • SpringBoot集成Swagger2生成接口文檔的方法示例

    SpringBoot集成Swagger2生成接口文檔的方法示例

    我們提供Restful接口的時候,API文檔是尤為的重要,它承載著對接口的定義,描述等,本文主要介紹了SpringBoot集成Swagger2生成接口文檔的方法示例,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • spring boot過濾器FilterRegistrationBean實現(xiàn)方式

    spring boot過濾器FilterRegistrationBean實現(xiàn)方式

    這篇文章主要介紹了spring boot過濾器FilterRegistrationBean實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • JAVA 深層拷貝 DeepCopy的使用詳解

    JAVA 深層拷貝 DeepCopy的使用詳解

    最近需要用到比較兩個對象屬性的變化,其中一個是oldObj,另外一個是newObj,oldObj是newObj的前一個狀態(tài),所以需要在newObj的某個狀態(tài)時,復(fù)制一個一樣的對象,由于JAVA不支持深層拷貝,因此專門寫了一個方法
    2013-07-07

最新評論

黔西| 阳曲县| 周至县| 宜春市| 富锦市| 白朗县| 中牟县| 富蕴县| 泉州市| 洱源县| 鄂伦春自治旗| 勐海县| 镶黄旗| 沂源县| 谢通门县| 乡宁县| 固镇县| 湖北省| 嘉峪关市| 安康市| 安国市| 舟曲县| 城固县| 东乌| 胶南市| 南丹县| 吉首市| 县级市| 申扎县| 蓝山县| 延寿县| 岑巩县| 泰和县| 酉阳| 潼关县| 巧家县| 合川市| 云霄县| 耿马| 麻城市| 白水县|