apache FtpServer整合spring逻辑处理
上面我们的部署工作完成了,那么文件上传下载后,ftpserver会自动相应我们的上传下载操作,也就是说ftpServer服务器会得到触发,那么我们如果要得到文件的一些信息,比如说文件的路径、大小、类型等等,并且还有我们的逻辑要处理,比如说要将一些信息插入到我们的数据库中,这时我们就要编写一个类,最主要的是这个类要extends一个很重要的类---DefaultFtplet,我们就会得到想要的文件数据,下面对其方法进行相应的详细介绍:
在DefaultFtplet中提供了很多方法接口,用于在客户端连接、断开、上传下载时返回信息。具体的列表参考http://mina.apache.org/ftpserver/ftplet.html
我们先override其中的method.
先写一个类public static class MyFtplet extends DefaultFtplet {}
然后点击eclipse中的source-override/implement method。eclipse会把可以override的method全部列出来,里面的方法基本上可以满足我们的项目需求。
我们选择onConnect,onLogin,onUpLoadEnd,onDisconnect这四个基本的方法。勾选完之后点击“OK ",这些方法就自动override好了。
二、session
override之后的方法里面有一个参数是FtpSession session。下面看看这个参数中的一些常用功能。
session.getConnectionTime()
获取用户连接的时间
session.getFileSystemView()
获取当前服务器的文件结构,返回类型为FtpFile
session.getFileSystemView().getHomeDirectory()
获取服务器根目录路径,返回类型为FtpFile
session.getFileSystemView().getWorkingDirectory()
获取用户当前连接的目录路径,返回类型为FtpFile
session.getFileSystemView().getWorkingDirectory().getName()
获取用户当前连接的目录名字,返回类型为String
session.getFileSystemView().getWorkingDirectory().getAbsolutePath()
获取用户当前连接的目录的完整路径名字,返回类型为String(返回之后最后是没有斜杠的)。用这个可以获取用户文件的存放路径。
session.getLoginTime()
获取用户登录时间(这和连接时间是不同的概念)
三、request
方法中的另一个参数FtpRequest request
request.getArgument()
获取用户提交的命令中的参数,比如存储命令,这个参数就是文件名
request.getCommand()
获取用户提交的命令中的命令。比如存储的命令是"STOR"
request.getRequestLine()
获取用户提交的命令中的命令+参数
例如:
package com.ftp.util; import java.io.IOException; import org.apache.ftpserver.ftplet.DefaultFtplet;
import org.apache.ftpserver.ftplet.FtpException;
import org.apache.ftpserver.ftplet.FtpRequest;
import org.apache.ftpserver.ftplet.FtpSession;
import org.apache.ftpserver.ftplet.FtpletResult; public class FtpService extends DefaultFtplet{ @Override
public FtpletResult onUploadEnd(FtpSession session, FtpRequest request)
throws FtpException, IOException {
String path = session.getFileSystemView().getWorkingDirectory().getAbsolutePath();//获取当前路径
String rootPath = session.getUser().getHomeDirectory();//获取根目录绝对路径
String filename = request.getArgument();//获取文件名
System.out.println("path="+path+"rootPath="+rootPath+"filename="+filename);
//得到相应的信息后,下面可以进行我们的逻辑处理啦.......
return super.onUploadEnd(session, request);
} @Override
public FtpletResult onUploadStart(FtpSession session, FtpRequest request)
throws FtpException, IOException {
return super.onUploadStart(session, request);
}
}
上面只是重写了两个方法,我们可以根据项目的需求重写相应的方法即可!!这样我们的FtpServer基本上大功告成了,每当用户上传文件后,ftpServer就会得到监听,处理我们所需的逻辑块,使用applet进行ftp文件上传,见下篇,实现的主要功能是通过ftp以及client进行大文件的上传处理!!
apache FtpServer整合spring逻辑处理的更多相关文章
- apache FtpServer 整合spring部署
我们在项目中可能会出现这样的需求,使用ftp上传很大的文件后对需要对文件进行相应的逻辑处理,这时我们可以使用apache ftpServer来处理这段逻辑,只要我们做相应的部署和编写我们的逻辑代码,这 ...
- apache shiro整合spring(一)
apache shiro整合spring 将shiro配置文件整合到spring体系中 方式一:直接在spring的配置文件中import shiro的配置文件 方式二:直接在web.xml中配置sh ...
- springboot整合apache ftpserver详细教程(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/12192425.html,否则将追究法律责任!!! 一.Apache ftpserver相关 ...
- struts2整合spring应用实例
我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...
- eclipse环境下基于已构建struts2项目整合spring+hibernate
本文是基于已构建的struts2项目基础上整合 spring+hibernate,若读者还不熟悉struts2项目,请先阅读 eclipse环境下基于tomcat-7.0.82构建struts2项目 ...
- Mybatis整合Spring实现事务管理的源码分析
一:前言 没有完整看完,但是看到了一些关键的地方,这里做个记录,过程会有点乱,以后逐渐补充最终归档为完整流程:相信看过框架源码的都知道过程中无法完全确定是怎样的流程,毕竟不可能全部都去测试一遍 ,但是 ...
- ActiveMQ整合spring、同步索引库
1. Activemq整合spring 1.1. 使用方法 第一步:引用相关的jar包. <dependency> <groupId>org.springframework ...
- 整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建
整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建 1. 介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模 ...
- JAVAEE——宜立方商城09:Activemq整合spring的应用场景、添加商品同步索引库、商品详情页面动态展示与使用缓存
1. 学习计划 1.Activemq整合spring的应用场景 2.添加商品同步索引库 3.商品详情页面动态展示 4.展示详情页面使用缓存 2. Activemq整合spring 2.1. 使用方法 ...
随机推荐
- Java 自定义实现 LRU 缓存算法
背景 LinkedHashMap继承自HashMap,内部提供了一个removeEldestEntry方法,该方法正是实现LRU策略的关键所在,且HashMap内部专门为LinkedHashMap提供 ...
- poj 3190 Stall Reservations 贪心 + 优先队列
题意:给定N头奶牛,每头牛有固定的时间[a,b]让农夫去挤牛奶,农夫也只能在对应区间对指定奶牛进行挤奶, 求最少要多少个奶牛棚,使得在每个棚内的奶牛的挤奶时间不冲突. 思路:1.第一个想法就是贪心,对 ...
- ssh登录失败处理步骤
如果登录失败而又找不到显示的原因,优先使用ssh -vT name@ip -p port 进行调试,查看所使用的key文件.ip.端口是否正确.然后再检查下面步骤:1.检查在对应用户名下是否有iden ...
- js相对定位
效果图:
- TypeScript 素描 - 模块解析、声明合并
模块解析 模块解析有两种方式 相对方式 也就是以/或 ./或-/开头的,比如import jq from "/jq" 非相对方式 比如 import model from ...
- 利用ant进行编译和发布项目
本文通过一个示例来解说如何通过ant进行编译和发布项目.本例按如下目录结构来组织项目. D:/web/antsample项目根目录 D:/web/antsample/src源代码目录 D:/web/a ...
- WinForm 控件不闪烁
1: [DllImport("user32")] 2: public static extern int SendMessage(IntPtr hwnd, int wMsg, in ...
- Linux 下提高make的编译效率
Linux下安装程序,一般都通过包管理器安装,但是包管理器或软件商店里的软件往往不是最新版本的,安装最新版软件时通常是下载源代码进行编译. 编译安装源代码时就离不开make了,但是make是单线程的, ...
- Sublime 学习记录(二) package control 组件
i. 按Ctrl + ` 调出console (如果有QQ输入法会有冲突需要关闭热键) ii. 粘贴以下代码到底部命令行并运行 import urllib.requ ...
- IOS 开发调试方法
0.警告 尽量一个警告都不要有 1.错误 1)红色提示 编译过不去的原因大部分是语法,检查括号的匹配,变量名称,作用域范围 2)编译可以通过,可以运行 a.运行过程中程序崩溃 在debug区域的右侧, ...