基于Spring Boot制作的档案传输工具

这是一个基于SpringBoot的文件传输工具,允许设备间进行资料传输。用户可以在IDEA中直接运行,也可打成jar包在任何Java环境下执行。项目提供了一个服务管理面板,设置共享文件夹和端口后即可启动服务器。其他设备通过IP:端口访问,可浏览并下载共享文件夹中的文件,还支持文件上传。核心技术包括配置外部资源下载和处理文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

基于Spring Boot制作的档案传输工具,方便设备间互相传输资料。

开源地址

https://gitee.com/beautifulwei/file-transfer

安装教程

在idea中直接执行 FileTransferApplication.main。

可以打成jar包在任何有java允许环境的电脑上运行。

https://beautifulwei.gitee.io/pages/files/FileTransfer.jar 这里有已经打好的jar,可直接下载使用。

使用说明

启动项目后,先看到服务管理面板,选择好共享文件夹及运行端口后,启动服务器。(注:面板上还有一个IP选项,是由于电脑可能不止一张网卡,此项仅用于查询ip,省的去控制台打ipconfig)

项目启动后,可在其他内网设备(PC、手机)的浏览器输入 ip:port 即可进入文件列表页,显示的是面板上共享文件夹下的文件(夹),默认是项目的根目录或jar包所在文件夹。

文件列表上半部是文件夹列表,可进入下一级页面。(如果要回上一级,直接按浏览器返回键即可,懒得多敲代码了)

文件列表下半部是可下载文件,点击超链接即可开始下载档案。

最下方可选择上传文件,将档案上传到当前文件列表所在的目录下。

项目结构

本项目就这么几个文件,适合初学者学习借鉴。

主要功能(核心技术)

1. 下载,引入外部资源

@Configuration
public class MobileWebMvcConfigurer implements WebMvcConfigurer {

    /**
     * 外部资源路径
     **/
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/files/**").addResourceLocations("file:" + AppData.get().getFilePath() + File.separator);
    }
}

addResourceLocations("file:外部资源目录")

addResourceHandler("外部资源的下载目录")

例如 registry.addResourceHandler("/files/**").addResourceLocations("file:D:/")

启动服务后,浏览器输入 localhost:8080/files/test.txt 即可访问到 D:下的test.txt文件

2. 上传

fileList.html

<form id="upload" th:action="${'file/uploadFile?savePath=' + pathEncode}" 
     method="post" enctype="multipart/form-data" onsubmit="return checkFile()">
    <input id="uploadFile" type="file" name="uploadFile" multiple>
    <input type="submit" value="上传文件">
</form>

FileController

    @PostMapping(value = "/uploadFile", headers = "content-type=multipart/form-data")
    private String uploadFile(HttpServletRequest request, String savePath){
        Li.i("FileController.uploadFile ip:", WebUtils.getIpAddr(request), ", savePath:", savePath);

        MultipartHttpServletRequest multipartRequest = ((MultipartHttpServletRequest) request);
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        if(fileMap.size() == 0){
            return returnError(CODE_FAIL, "无上传的档案");
        }

        int successNo = 0;
        int errNo = 0;
        for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()){
            String key = entry.getKey();
            List<MultipartFile> files = multipartRequest.getFiles(key);
            if(files == null || files.size() == 0) continue;
            for (MultipartFile file : files) {
                Li.i("key:" + key + ", file:" + file.getOriginalFilename());
                if (file.isEmpty()) {
                    errNo++;
                    continue;
                }

                File dest = new File(savePath, file.getOriginalFilename());
                if(dest.exists()) {
                    Li.i("已存在:" + dest);
                    errNo++;
                } else {
                    try {
                        file.transferTo(dest);
                        Li.i("文件上传成功:" + dest);
                        successNo++;
                    } catch (IOException e) {
                        e.printStackTrace();
                        Li.i("文件上传失败:" + dest);
                        errNo++;
                    }
                }
            }
        }

        StringBuffer sb = new StringBuffer();
        if(successNo > 0){
            sb.append("上传成功:").append(successNo).append("个文件");
        }
        if(errNo > 0){
            if(successNo > 0){
                sb.append(", ");
            }
            sb.append("上传失败:").append(successNo).append("个文件");
        }

        if(errNo > 0){
            return returnError(CODE_FAIL, sb.toString());
        } else {
            return returnResult(sb.toString(), null);
        }
    }

3. javax.swing面板

效果

上述的代码只是一些关键代码,缺少辅助类可能没办法直接“拿来用”,具体实现代码,请直接参考源码。

<think>好的,我现在需要帮助用户找到关于如何使用Spring Boot 3创建登录和注册页面的教程或示例代码。根据用户的问题,他可能正在寻找一个具体的步骤指南或者可以直接参考的示例项目。首先,我需要回顾之前提供的引用内容,看看是否有相关的资源。 引用[1]提到了一个使用Spring Security、Spring BootSpring Data JPA和HSQL的注册登录示例项目,项目地址也给出了。虽然这个项目可能不是专门针对Spring Boot 3的,但用户可能需要参考类似的结构,尤其是在整合Spring Security和JPA方面。不过,用户特别提到了Spring Boot 3,所以需要考虑版本兼容性的问题。 引用[2]是关于Spring Cloud Alibaba基于Spring Boot 3.x的搭建教程,这里可能涉及一些Spring Boot 3的新特性,但主要关注微服务,可能和登录注册页面关系不大。不过,开发环境的版本信息(如JDK 17、Spring Boot 3.0.13)对用户来说可能有参考价值,尤其是在配置项目时需要确保依赖的版本正确。 引用[3]是Spring Boot 3整合Redis的教程,虽然主题是Redis,但里面提到了如何用新版的IDEA 2023创建Spring Boot 3项目,并导入了相关依赖。这部分内容对用户创建项目的基础结构可能有帮助,尤其是在项目初始化和依赖管理方面。 接下来,我需要整合这些信息,为用户提供一个清晰的步骤指南。首先,创建一个新的Spring Boot 3项目,使用IDEA 2023,JDK 17,并确保依赖正确。然后,整合Spring Security来处理认证和授权,使用Thymeleaf或JSP作为视图层技术。引用[1]中的示例虽然可能不是Spring Boot 3,但可以调整依赖版本后参考其结构。同时,需要注意Spring Boot 3对Jakarta EE的依赖,包名从javax变更为jakarta,这点在配置时需要特别注意。 用户可能需要具体的代码示例,比如控制器、实体类、安全配置和页面模板。例如,在安全配置中,需要覆盖WebSecurityConfigurerAdapter的方法,但Spring Boot 3可能已经弃用了这个类,转而使用组件化的配置方式。此外,用户可能需要整合Spring Data JPA来持久化用户信息,引用[1]中的示例在这里可以作为参考,但需要调整依赖版本,如使用Spring Boot 3兼容的Spring Data JPA版本。 在视图层,Thymeleaf是更常见的选择,尤其是在现代Spring Boot应用中,所以可能需要指导用户如何配置Thymeleaf模板,并创建注册和登录的HTML页面。同时,表单提交的CSRF保护在Spring Security中是默认启用的,需要确保在表单中包含相应的token。 另外,用户可能需要了解如何处理密码加密,使用PasswordEncoder,以及如何自定义用户认证逻辑,比如从数据库加载用户信息。这部分在引用[1]的示例中应该有所涉及,但需要适配到Spring Boot 3的环境。 最后,测试和运行应用,确保注册和登录功能正常工作,可能需要配置H2或HSQL数据库,或者使用其他数据库如MySQL,这取决于用户的需求。引用[1]中的示例使用HSQL,但在Spring Boot 3中配置数据源的方式可能略有不同,需要检查application.properties的配置是否正确。 总结来说,用户的请求需要结合Spring Boot 3的新特性和现有示例项目进行适配,确保所有依赖版本兼容,并正确配置安全机制和持久层。需要分步骤引导用户创建项目、添加依赖、编写代码和配置,同时提供相关资源链接供用户参考。</think>根据您提出的Spring Boot 3登录注册功能开发需求,结合站内引用资源及最新技术规范,以下是实现方案: ### 一、环境准备 1. **开发工具**:IntelliJ IDEA 2023+(含Spring Initializr支持) 2. **核心依赖**:JDK 17+、Spring Boot 3.0.13+(引用[2]环境配置) 3. **数据库选择**:可选用HSQL(内存数据库)或MySQL(需配置连接池) ### 二、项目创建步骤 ```bash # 通过Spring Initializr创建项目 Spring Boot: 3.0.13 Packaging: Jar Dependencies: - Spring Web - Spring Security - Spring Data JPA - Thymeleaf - H2 Database(或HSQL) ``` ### 三、关键代码实现 1. **实体类定义**(注意使用jakarta包): ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(unique = true) private String email; private String password; // 省略getter/setter } ``` 2. **安全配置类**(适配Spring Boot 3新特性): ```java @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/registration").permitAll() .anyRequest().authenticated()) .formLogin(form -> form .loginPage("/login").permitAll() .defaultSuccessUrl("/home")); return http.build(); } } ``` 3. **用户服务层**(含密码加密): ```java @Service public class UserService implements UserDetailsService { @Autowired private UserRepository userRepository; @Autowired private PasswordEncoder passwordEncoder; public void registerUser(User user) { user.setPassword(passwordEncoder.encode(user.getPassword())); userRepository.save(user); } } ``` ### 四、视图层开发 1. **注册页面(registration.html)**: ```html <form th:action="@{/registration}" method="post"> <input type="email" name="email" required> <input type="password" name="password" required> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> <button type="submit">注册</button> </form> ``` 2. **登录页面(login.html)**: ```html <form th:action="@{/login}" method="post"> <input type="text" name="username"> <input type="password" name="password"> <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/> </form> ``` ### 五、功能验证 1. **测试用例编写**: ```java @SpringBootTest class UserRegistrationTest { @Autowired private UserService userService; @Test void testRegistration() { User user = new User("test@example.com", "password123"); assertDoesNotThrow(() -> userService.registerUser(user)); } } ``` ### 六、部署注意事项 1. **数据库配置**(application.properties): ```properties # 使用HSQL配置(引用[1]方案) spring.datasource.url=jdbc:hsqldb:mem:testdb spring.jpa.hibernate.ddl-auto=update ``` 2. **安全加固建议**: - 启用HTTPS传输 - 添加密码强度验证 - 实现验证码功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值