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手机网站?

