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. 使用方法 ...
随机推荐
- Android使用bindService启动服务
1.Service package com.example.ebobo; import java.util.Timer; import java.util.TimerTask; import andr ...
- pyqt listwidget下面创建多张图片
def Photosvisi(self): i=0 self.lists.setIconSize(QtCore.QSize(70,70))#设置显示图片大小 self.lists.setResizeM ...
- [转]轻量级 Java Web 框架架构设计
工作闲暇之余,我想设计并开发一款轻量级 Java Web 框架,看看能否取代目前最为流行的而又越来越重的 Spring.Hibernate 等框架.请原谅在下的大胆行为与不自量力,本人不是为了重造轮子 ...
- 【解决方法】EasyUI DataGrid不显示滚动条时,没有数据的问题
解决方法 于dataGrid例如,下面的代码被添加到的定义: JavaScript Code 1 2 3 4 5 6 7 8 9 10 onLoadSuccess : function (data ...
- 大到可以小说的Y组合子(二)
问:上一回,你在最后曾提到"抽象性不足",这话怎么说? 答:试想,如果现在需要实现一个其它的递归(比如:Fibonacci),就必须把之前的模式从头套一遍,然后通过fib_make ...
- Centos 7 python升级(2.7.5-》2.7.11)
1.安装升级GCC yum install gcc* openssl openssl-devel ncurses-devel.x86_64 bzip2-devel sqlite-devel pyth ...
- openssl ans.1编码规则分析及证书密钥编码方式
1 数据编码格式 openssl的数据编码规则是基于ans.1的,ans.1是什么 ? 先上高大上的解释 ASN.1(Abstract Syntax Notation One), 是一种结构化的描述语 ...
- System.Threading.Timer的使用技巧
转自:http://www.360doc.com/content/11/0812/11/1039473_139824496.shtml# System.Threading.Timer timer = ...
- 在Java中编写带占位符的SQL语句
C#中SQL中带占位符的语句 假设有一张学员信息表Student,通过表中的ID来找学员,查询的SQL语句如下 string sql = string.Format("select * fr ...
- Java线程状态:BLOCKED与WAITING的区别
Doc说明: /** * Thread state for a thread blocked waiting for a monitor lock. * A thread in the blocked ...