Socket+JDBC+IO实现Java文件上传下载器DEMO详解

发布时间 - 2026-01-11 01:22:58    点击率:

该demo实现的功能有:

1.用户注册:

注册时输入两次密码,若两次输入不一致,则注册失败,需要重新输入。若用户名被注册过,则提示用户重新输入用户名;

2.用户登录:

需要验证数据库中是否有对应的用户名和密码,若密码输错三次,则终止用户的登录操作;

3.文件上传:

从本地上传文件到文件数据库中

4.文件下载:

从数据库中下载文件到本地

5.文件更新:

根据id可更新数据库中的文件名

6.文件删除:

根据id删除数据库中某一个文件

7.看数据库所有文件;

8.查看文件(根据用户名);

9.查看文件(根据文件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;
 //方法
 //构造方法
 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;
 //方法
 //构造方法
 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类包括了与用户相关的注册和登录功能相关的方法

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;
 }
}

文件服务类:

 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详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# socket  # jdbc  # io  # java  # 文件上传下载器  # Java 基于TCP Socket 实现文件上传  # Java中用Socket实现HTTP文件上传实例  # Java Socket+mysql实现简易文件上传器的代码  # JavaWeb实现文件上传下载功能实例解析  # JAVA中使用FTPClient实现文件上传下载实例代码  # java实现FTP文件上传与文件下载  # JavaWeb实现文件上传下载功能实例详解  # java web图片上传和文件上传实例  # Java实现文件上传至服务器的方法  # java使用Socket实现文件上传功能  # 数据库中  # 两次  # 小编  # 文件上传  # 重新输入  # 在此  # 给大家  # 用户登录  # 所述  # 用户注册  # 给我留言  # 感谢大家  # 上传文件  # 疑问请  # 有任何  # 下载器  # 保存文件  # 上传  # 实体类  # username 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何做网站制作流程,*游戏网站怎么搭建?  怎样使用JSON进行数据交换_它有什么限制  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  中山网站制作网页,中山新生登记系统登记流程?  如何有效防御Web建站篡改攻击?  移动端脚本框架Hammer.js  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Linux系统命令中tree命令详解  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何用好域名打造高点击率的自主建站?  zabbix利用python脚本发送报警邮件的方法  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何快速使用云服务器搭建个人网站?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  深圳网站制作平台,深圳市做网站好的公司有哪些?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  js实现获取鼠标当前的位置  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  在centOS 7安装mysql 5.7的详细教程  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel如何创建自定义Artisan命令?(代码示例)  如何快速生成ASP一键建站模板并优化安全性?  如何实现建站之星域名转发设置?  如何在Ubuntu系统下快速搭建WordPress个人网站?  Bootstrap整体框架之CSS12栅格系统  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何快速打造个性化非模板自助建站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何实现事件和监听器?(Event & Listener实战)  如何在建站主机中优化服务器配置?  JavaScript如何实现错误处理_try...catch如何捕获异常?  利用vue写todolist单页应用  php 三元运算符实例详细介绍  如何快速搭建高效WAP手机网站?